从std::string(或std::wstring)的开头和末尾移除字符

编程语言 2026-07-12

假设我有一个 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导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章