我正在使用Visual Studio 2013中的C ++创建一个小型货币转换程序。
对于井号,我使用Windows-1252代码为£符号创建了一个char变量。
const char poundSign(156);
我需要找到一种方法,可以为欧元符号实现符号。当我运行程序时。
答案 0 :(得分:1)
您不应该使用任何已弃用的extended ASCII encodings,因为它们现在已经过时了。正如用户1937198所说,156
是古代Windows-1252* encoding中£
的字符代码。这些编码中非ASCII字符的出现取决于用户选择的codepage,这使得在这种方案下不可能混合来自不同代码页的字符。此外,如果用户选错了代码页,您的用户将会非常困惑。
请考虑使用Unicode。由于您使用的是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个字符,因此最好存储"字符" *作为字符串。
请记住,这意味着您的程序的其余部分也应该切换到Unicode:使用" W" Windows API的版本(WCHAR
- 版本)。
[*]在技术术语中,每个" Unicode字符"被称为代码点。
答案 1 :(得分:0)
您必须区分翻译环境和执行环境。 例如,它在很大程度上取决于程序的运行位置字形分配给您打算生成的字符(参见“代码页”)。
您可能想检查您的终端或任何知道unicode的信息,然后只使用适当的代码点。
此外,您不应该像您那样创建字符常量。改为使用字符文字。