std :: string无法比较多字节符号,如€º或ª

时间:2014-06-15 16:57:13

标签: c++ string comparison

我的问题是我有一个std::string,其中包含数字和以下字符之一:%,$,€,º或ª。我必须将号码和符号分别存储在std::list

问题是符号ºª具有多字节编码,我无法与运算符==进行直接比较,所以我'我正在寻找比较这些多字节字符的任何提示或良好做法。

1 个答案:

答案 0 :(得分:4)

您可能在当前编码中将这些符号称为 multibyte ,可能是UTF-8。

如果是这样的话,最简单的解决方案是考虑它们,而不是字符,而不是小字符串,就像在C ++中char实际上不是字符而是< EM>字节

所以,要找到你的字符串中有

std::string x = "I have 100.00 €".
std::string::size_type pos = x.find("€");

请注意,"€"使用双引号,而不是单引号,因为它是一个小字符串,而不是字符。

其余算法与单个字符没有太大区别。我能想到的另一个不同之处是strlen("€") > 1