我需要删除"时间"来自某些字符串,如果它作为最后一个子字符串存在。解决方案需要适用于这些情况:
"AmpliTime" => "Ampli"
"IsoTimeTime" => "IsoTime"
"SometypeTimeAndThenTime" => "SometypeTimeAndThen"
"SometypeTimeAndThenTimeAbc" => "SometypeTimeAndThenTimeAbc"
我尝试过这样的事情,但是如果“Time”这个词出现在除了结尾之外的其他地方,它会遇到问题。
long start = s.find("Time");
if (start > 0)
{
printf("%d\n", start);
s.erase(start, 5);
}
printf("%d\n", start);
答案 0 :(得分:3)
rfind
可能效率低下,因为在字符串不以Time
结尾的情况下,它会继续搜索字符串。
compare
会查看您感兴趣的字符串部分:
if (s.size() >= 4 && s.compare(s.size()-4, 4, "Time") == 0) {
s.resize(s.size() - 4);
}
如您所见,我在代码中使用了数字4
四次。可疑的风格,但它完成了工作。我已经决定对于一个固定字符串如此短的情况,这比将长度放在一个变量中更清楚,但是YMMV。