使C++ std :: string以指定字符结尾?

Kus*_*wal 2 c++ string c++11 c++14

假设我正在遍历一串长度为n的字符串.我希望它以符合某些条件的特定角色结束.我知道只需在字符数组中的位置i分配字符'\ 0',就可以在第i个位置终止C样式字符串.

有没有办法在std :: string(C++样式字符串)中实现相同的结果?我可以想到substr,erase等,但它们的复杂性都是线性的,我无法承受.

TL; DR,是否有std :: string的"end"字符?我可以以某种方式使结束迭代器指向当前字符吗?

Ker*_* SB 5

你可以使用resize:

std::string s = /* ... */;

if (auto n = s.find(c); n != s.npos) {
  s.resize(n);
}
Run Code Online (Sandbox Code Playgroud)

  • @KushalAgrawal:请在标准*中显示*,其中`resize`的复杂性被定义为线性.我是认真的; 我找不到*任何*复杂的陈述.Cppreference是一个很棒的网站,但与任何二级资源一样,它不具有权威性. (2认同)