Ale*_*JCS 0 c++ wchar-t stdmap char
std::map<char, wchar_t>我正在尝试使用C++ 中的数据类型创建一个变量。当我尝试此操作时,Visual Studio 给出以下构建错误:
\n\nC2440“初始化”:无法从“初始化列表”转换为“std::map<char,wchar_t,std::less<char>,std::allocator<std::pair<const char,wchar_t>>>”
\n
wchar_t当是键数据类型和char是值数据类型时也会发生同样的错误。
您可以通过运行以下代码来复制此错误:
\nconst std::map<char, wchar_t> UNICODE_MAP = {\n { 'X', L"\xe2\x96\x88" },\n { 'G', L"\xe2\x96\x93" },\n { 'O', L"\xe1\x97\xa3" },\n { 'P', L"\xe1\x97\xa4" }\n};\nRun Code Online (Sandbox Code Playgroud)\n如何制作一个以键为 a char、以值作为wchar_t数据类型的映射?
这是从窄字符到宽字符的映射,而不是字符到宽字符串的映射:
\n而不是这个:
\nconst std::map<char, wchar_t> UNICODE_MAP = {\n { 'X', L"\xe2\x96\x88" },\n { 'G', L"\xe2\x96\x93" },\n { 'O', L"\xe1\x97\xa3" },\n { 'P', L"\xe1\x97\xa4" }\n};\nRun Code Online (Sandbox Code Playgroud)\n用这个:
\nconst std::map<char, wchar_t> UNICODE_MAP = {\n { 'X', L'\xe2\x96\x88' },\n { 'G', L'\xe2\x96\x93' },\n { 'O', L'\xe1\x97\xa3' },\n { 'P', L'\xe1\x97\xa4' }\n};\nRun Code Online (Sandbox Code Playgroud)\n如果您确实需要该值是字符串,则将其声明为:
\nconst std::map<char, std::wstring> UNICODE_MAP = {\n { 'X', L"\xe2\x96\x88" },\n ...\nRun Code Online (Sandbox Code Playgroud)\n另外,当我在这里时,我主张转义源文件中不在 ASCII 范围内的所有 Unicode 字符。在具有不同行为的 IDE、修订控制系统以及大厅里没有阅读您有关“另存为 Unicode”的备忘录的人之间,这很容易被损坏。所以...我的最终建议是这样的:
\nconst std::map<char, wchar_t> UNICODE_MAP = {\n { 'X', L'\\u2588' },\n { 'G', L'\\u2593' },\n { 'O', L'\\u15e3' },\n { 'P', L'\\u15e4' }\n};\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |