gpt4 book ai didi

C++ 将特殊的 ascii 字符打印到 Windows 控制台

转载 作者:行者123 更新时间:2023-11-30 03:51:49 25 4
gpt4 key购买 nike

经过 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";
}

生成:

Compilation and execution result

问题是您的源文件在 CP437 中,因此该字符的值与您尝试打印的那个不同(正如您所指出的,在您的源值中是 165,这是是 CP437 中的不同字符)。

https://en.wikipedia.org/wiki/Code_page_437

关于C++ 将特殊的 ascii 字符打印到 Windows 控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31083573/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com