我在Visual Studio2013中用C++创建了一个小的货币转换程序。
对于井号,我使用Windows-1252代码为£符号创建了一个char变量。
const char poundSign(156);我需要找到一种方式,我可以实现欧元的符号,欧元符号。当我运行程序的时候。
发布于 2015-01-22 02:43:38
你不应该使用任何过时的extended ASCII encodings,因为它们现在已经过时很久了。正如user1937198所说,156是古语Windows-1252* encoding中£的字符代码。这些编码中非ASCII字符的外观取决于用户选择的codepage,这使得在这种方案下不能混合来自不同代码页的字符。此外,如果用户选择了错误的代码页,他们会非常困惑。
考虑改用Unicode。由于您使用的是Windows、you should probably use UTF-16,在这种情况下,正确的方法是声明:
// make sure the source code is saved as UTF-16!
const wchar_t poundSign[] = L"£";
const wchar_t euroSign[] = L"€";在UTF-16中,由于surrogate mechanism的原因,不能保证单个字符只包含1个字符,因此最好将"characters"*存储为字符串。
请记住,这意味着程序的其余部分也应该切换到Unicode :使用Windows API的"W“版本( WCHAR-versions)。
*在技术行话中,每个"Unicode字符“都被称为代码点。
发布于 2015-01-22 02:41:48
您必须区分转换环境和执行环境。例如,这在很大程度上取决于你的程序在哪里运行,什么字形被分配给你想要产生的字符(参见“代码页”)。
您可能希望检查您的终端或任何支持unicode的终端,然后只需使用适当的代码点。
此外,您不应该像以前那样创建字符常量。请改用字符文字。
https://stackoverflow.com/questions/28074422
复制相似问题