Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;通用Unicodes_C++_Unicode - Fatal编程技术网

C++ C++;通用Unicodes

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" <&

我有一个很快的问题,在其他任何地方都找不到答案。基本上,我试图创建一个通用函数来返回正确的unicode(而不是生成文本),如下面的std::string getUnicode()函数所示。\xe2\x99\xa和cardType在输出中被视为两个单独的字符串,这会导致“?”后跟cardType编号

在这种情况下:

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