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

例如,std::string可能包含:
./Folder/File.txt
我想删除.
我在做:

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

并得到一个错误:error: no match for 'operator+' in 'newStr + 1'
我犯什么错误?

更新:哦,我想我应该使用char*,但对std::string无效

最佳答案

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

有关擦除的更多信息,请参见this site
memmove仅在直接处理缓冲区(char *或char [])时才有效。如果您的类型是std::string,请使用为其指定的功能(擦除),不要在c_str上尝试memmove

关于c++ - 使用 `memmove`删除std::string的第一个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13366970/

10-14 11:03