我的问题是我有一个std::string
,其中包含数字和以下字符之一:%,$,€,º或ª。我必须将号码和符号分别存储在std::list
。
问题是符号€
,º
和ª
具有多字节编码,我无法与运算符==
进行直接比较,所以我'我正在寻找比较这些多字节字符的任何提示或良好做法。
答案 0 :(得分:4)
您可能在当前编码中将这些符号称为 multibyte ,可能是UTF-8。
如果是这样的话,最简单的解决方案是考虑它们,而不是字符,而不是小字符串,就像在C ++中char
实际上不是字符而是< EM>字节
所以,要找到你的字符串中有€
:
std::string x = "I have 100.00 €".
std::string::size_type pos = x.find("€");
请注意,"€"
使用双引号,而不是单引号,因为它是一个小字符串,而不是字符。
其余算法与单个字符没有太大区别。我能想到的另一个不同之处是strlen("€") > 1
。