从std::string(或std::wstring)的开头和末尾移除字符
假设我有一个 std::string,如下所示:
std::string temp = "{abc,def}";
我希望 temp 包含 "abc,def",也就是从 temp 的开头和结尾移除 '{' 和 '}' 两个字符。
于是我写了:
temp = temp.substr( 1, temp.length() - 1 );
然而,在执行之后,temp 包含了 "abc,def}"。
我还缺少什么?有没有更简单的方法来实现我想要的效果?
解决方案
temp = temp.substr( 1, temp.length() - 1 ); - 如评论中所述,它得到的是一个比原字符串短一个字符的子字符串,但你想删除两个字符,因此正确的代码是:
temp = temp.substr( 1, temp.length() - 2 );
这会构造一个新字符串,对于较长的字符串来说并非最优解。一个更好的就地解决方案:
temp.erase(0, 1); // or temp.erase(temp.begin())
temp.pop_back();
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。