C++ C++;通用Unicodes
我有一个很快的问题,在其他任何地方都找不到答案。基本上,我试图创建一个通用函数来返回正确的unicode(而不是生成文本),如下面的std::string getUnicode()函数所示。\xe2\x99\xa和cardType在输出中被视为两个单独的字符串,这会导致“?”后跟cardType编号 在这种情况下:C++ C++;通用Unicodes,c++,unicode,C++,Unicode,我有一个很快的问题,在其他任何地方都找不到答案。基本上,我试图创建一个通用函数来返回正确的unicode(而不是生成文本),如下面的std::string getUnicode()函数所示。\xe2\x99\xa和cardType在输出中被视为两个单独的字符串,这会导致“?”后跟cardType编号 在这种情况下: cout << "\xe2\x99\xa0"; //prints out a symbol, GOOD cout << "\xe2\x99\xa" <&
cout << "\xe2\x99\xa0"; //prints out a symbol, GOOD
cout << "\xe2\x99\xa" << 0; //prints out "?" followed by 0. BAD
cout << card.getUnicode(); //prints out "?" followed by 0. BAD
<代码> CUT> P>这是在C++标准中讨论的,第2.14节,第13段: [示例:
"\xA" "B"
包含串联后的两个字符'\xA'
和'B'
(而不是单个十六进制字符'\xAB'
)。-结束示例]
问题是'\xa'
被视为单个字符(十六进制值0xa
是十进制的10,它映射到/UTF中的\n
(换行)字符)。cardType
不会被“附加”到转义序列中。事实上,转义序列是在编译时计算的,而不是在运行时(即在计算卡类型时)
要使其正常工作,您需要执行以下操作:
ss << "\xe2\x99" << static_cast<char>(0xa0 + cardType);
<代码> SS> P>这是在C++标准中讨论的,第2.14节,第13段: [示例:
"\xA" "B"
包含串联后的两个字符'\xA'
和'B'
(而不是单个十六进制字符'\xAB'
)。-结束示例]
问题是'\xa'
被视为单个字符(十六进制值0xa
是十进制的10,它映射到/UTF中的\n
(换行)字符)。cardType
不会被“附加”到转义序列中。事实上,转义序列是在编译时计算的,而不是在运行时(即在计算卡类型时)
要使其正常工作,您需要执行以下操作:
ss << "\xe2\x99" << static_cast<char>(0xa0 + cardType);
<代码> SS> P>这是在C++标准中讨论的,第2.14节,第13段: [示例:
"\xA" "B"
包含串联后的两个字符'\xA'
和'B'
(而不是单个十六进制字符'\xAB'
)。-结束示例]
问题是'\xa'
被视为单个字符(十六进制值0xa
是十进制的10,它映射到/UTF中的\n
(换行)字符)。cardType
不会被“附加”到转义序列中。事实上,转义序列是在编译时计算的,而不是在运行时(即在计算卡类型时)
要使其正常工作,您需要执行以下操作:
ss << "\xe2\x99" << static_cast<char>(0xa0 + cardType);
<代码> SS> P>这是在C++标准中讨论的,第2.14节,第13段: [示例:
"\xA" "B"
包含串联后的两个字符'\xA'
和'B'
(而不是单个十六进制字符'\xAB'
)。-结束示例]
问题是'\xa'
被视为单个字符(十六进制值0xa
是十进制的10,它映射到/UTF中的\n
(换行)字符)。cardType
不会被“附加”到转义序列中。事实上,转义序列是在编译时计算的,而不是在运行时(即在计算卡类型时)
要使其正常工作,您需要执行以下操作:
ss << "\xe2\x99" << static_cast<char>(0xa0 + cardType);
我不明白你想要什么。什么是“返回正确的Unicode”?该代码可能有一些意义与UTF8。。。“输出”在哪里?我不明白你想要什么。什么是“返回正确的Unicode”?该代码可能有一些意义与UTF8。。。“输出”在哪里?我不明白你想要什么。什么是“返回正确的Unicode”?该代码可能有一些意义与UTF8。。。“输出”在哪里?我不明白你想要什么。什么是“返回正确的Unicode”?该代码可能有一些意义与UTF8。。。“输出”在哪里?请给我一个MVCE.cout