1

我想使用删除字符串的第一个字符memmove

例如,astd::string可能包含:

./Folder/File.txt

我想删除.

我在做:

if (newStr[0] == '.')
{
    memmove(newStr, newStr+1, strlen(newStr));
}

并得到一个错误:error: no match for 'operator+' in 'newStr + 1'

我犯了什么错误?

更新:哦,我想我应该使用char*这个不会在std::string

4

2 回答 2

6

看起来你的 newStr 是一个 std::string,在这种情况下你应该使用 newStr.erase(0,1);

有关擦除的更多信息,请参阅此站点

memmove仅当您直接处理缓冲区(char* 或 char[])时才有效。如果您的类型是 std::string,请使用适用于它的函数(擦除)并且不要尝试memmovec_str。

于 2012-11-13T19:03:05.380 回答
1

绝对不要为此使用 memmove。您假设您知道 std::string 的存储结构,并且您假设实现不是在多个 std::string 对象之间共享存储等。这些假设会给您带来痛苦和悲伤(和错误)。

于 2012-11-13T19:08:48.363 回答