【发布时间】:2013-03-19 19:42:42
【问题描述】:
有没有办法在单个命令中执行以下操作(以避免测试)
if (mystring.find_first_not_of("X") != std::string::npos) {
mystring.erase(0, mystring.find_first_not_of("X"));
}
【问题讨论】:
-
您可以将
find_first_not_of的结果存储在一个变量中。您仍然需要进行测试,但这将是一个超级便宜的恒定时间操作。 -
你可能会捏造
std::find和一个比较器。编辑:就在我按下回车键... -
另外,我感觉这里有一个 XY 问题。您的代码删除了前导
'0'字符。您是否尝试解析或缩短整数字符串?因为您很可能不必删除前导'0'字符。 -
@zneak : 完全没有,我可以写“A”或“B”
-
@DrewDormann 但事实并非如此;它的意思是“删除前导
0s,除非字符串只是0s”。