[英]C++ Printing special ascii characters to the Windows console
经过2个小时的搜索并尝试了各种方法后,我将头发拉出来,尝试在控制台上打印特殊的ASCII字符! (C ++)
typedef unsigned char UCHAR;
int main()
{
UCHAR c = '¥';
cout << c;
return 0;
}
为什么此代码打印Ñ(209)而不是¥(165)????
我试过了:
SetConsoleCP(CP_UTF8);
SetConsoleOutputCP(CP_UTF8);
但无论我采用哪种价值观,两者似乎都无能为力。
有人建议需要通过注册表更改控制台的字体。 但这太荒谬了。 我不希望最终用户仅为了运行我的程序而开始更改注册表值...
真正奇怪的是,如果我将所有的ASCII字符打印到一个文件中(使用ofstream),它们在记事本和Visual Studio编辑器(2012专业版)中都能正确显示。
ofstream file("ASCII.txt");;
if (file.is_open())
{
UCHAR c = 0;
for (int i = 0; i < 256; i++)
{
c++;
file << c << "\t|\t" << (int)c << endl;
}
}
file.close();
任何帮助深表感谢。 谢谢!
欢迎来到编码之苦:(
#include <iostream>
#include <windows>
int main() {
SetConsoleCP(437);
SetConsoleOutputCP(437);
std::cout << (char)157 << "\n";
}
产生:
问题在于您的源文件不在 CP437中,因此该字符的值与您尝试打印的字符不同(如您所指出的,您的源值是165,这是CP437中的另一个字符)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.