我正在尝试删除std::string中的一些开始和结束分隔符。有没有一种内置的或者更好的方法来做到这一点?
这是我目前的方式:
std::string sub = "~test.txt~";
std::string str = "~test.txt~The quick brown fox jumps over the lazy dog.~test.txt~";
str = str.substr(sub.length(), str.length() - sub.length() * 2);
开始分隔符和结束分隔符是完全相同的,并且它们位于最边缘。
期望值为The quick brown fox jumps over the lazy dog.
。
发布于 2019-06-06 07:44:27
代码的惟一问题是,.substr()
会创建一个新的std::string
,从而导致昂贵的分配(除非结果足够小,可以使用单点登录)。
使用std::string_view
来解决这个问题:
str = std::string_view(str).substr(sub.length(), str.length() - sub.length() * 2);
或者,使用.assign()
str.assign(str.begin() + sub.length(), str.end() - sub.length());
https://stackoverflow.com/questions/56469245
复制相似问题