假设我有这样一段C++代码:
char* str;
std::string data = "This is a string.";
我需要复制字符串 data
(除第一个和最后一个字符外)到 str
中。
我的解决方案是创建一个子串,然后执行以下操作 std::copy
。
std::string substring = data.substr(1, size - 2);
str = new char[size - 1];
std::copy(substring.begin(), substring.end(), str);
str[size - 2] = '\0';
但是可能这有点过度设计,因为我创建了一个新的字符串。有没有更简单的方法来实现这个目标?也许在 std:copy
调用中使用 偏移量 可以达到这个目的?
谢谢
.begin()+1
复制到.end()-1
。 - paolosubstring.c_str()
。或者必须要使用new[]
进行分配吗? - user253751std::string::copy
,它可以将子字符串复制到char *
中。 - chistd::string
,并将c_str()
传递给您正在接口化的任何函数?或者如果该函数修改字符串--std::string smallerString; ... some_c_func(&smallerString[0]);
- PaulMcKenziestd::string_view
! - Marek R