【发布时间】:2015-10-05 20:13:44
【问题描述】:
我正在尝试为每个字符解析一个字符串字符,以便可以根据每个字母加载图像。因此,如果文本是“你好”,我将打印 5 张相同字母但在 Photoshop 中制作的图像。 在我想解析 € 符号之前,它工作正常。
std::string al = "Test €";
std::string letter="";
for (int i=0; i< al.length();++i)
{
if (al[i]=='.') letter ="dot";
else if (al[i]==',') letter ="coma";
else if (al[i]==' ') letter ="space";
//else if (al[i]=='€') letter ="euro";
else letter=al[i];
}
这工作正常:letter 将获取值:"T","e","s","t","space" 但如果我取消注释 else if (al[i]=='€') letter ="euro"; 并尝试构建它,那么我会收到一条红色消息错误:
warning: multi-character character constant
所以问题是我需要知道 al[i] 是否是 € 符号才能将“欧元”分配给字母(然后我的代码将能够使用它)
我在谷歌上搜索发现link 说"\u20AC" 是€ 的c++ 代码,我想这个符号可能需要超过一个字节,但仍然找不到如何处理使用它并能够在我的代码中解析它。知道我该怎么做吗?
非常感谢。
注意:我不知道使用的 C++ 版本(不知道在哪里可以查看)但我知道它不是 c++11
【问题讨论】:
-
这是fedora中的一个eclipse c++项目。不要认为这是问题所在,但也许有人想知道。
-
€ 在 Unicode 中不是单字节字符,而是在 UTF-16 中编码为
20AC,在 UTF-8 中编码为E2 82 AC