有一行:
string str = { "hey, Johnny, how is твои дела?" };
你需要摆脱“俄罗斯尾巴”。我这样做,但由于某种原因,这条线保持不变
void delRussian(string& str)
{
auto i = find_if(str.begin(), str.end(), [](char& a) {
return a >= 128;//начало русских букв в ASCII
});
str.erase(i, str.end());
}
就这样试了
void delRussian(string& str)
{
auto i = find_if(str.begin(), str.end(), [](char& a) {
return (a >= 'А' && a <= 'ё');//начало русских букв в ASCII
});
str.erase(i, str.end());
}
没有任何。
我怀疑 char 已在您的系统上签名。在这种情况下,条件 a >= 128 永远不会起作用(因为在这种情况下 char 可表示的最大整数是 127)。
我建议这样修改:
也就是说,我们将值转换为无符号,然后进行比较。
或者您可以将条件更改为:
!(a > 0 && a <= 127)