在C+中打印(并存储)高位ASCII字符(╔;)+;控制台中 我正在用C++编写一个小程序,我想把这个字符存储在变量中:╔。但是,我只能在字符串中执行,如果我使用“符号,它只会显示以下内容:�
有什么我能做的吗 顺便说一句,我使用:在C+中打印(并存储)高位ASCII字符(╔;)+;控制台中 我正在用C++编写一个小程序,我想把这个字符存储在变量中:╔。但是,我只能在字符串中执行,如果我使用“符号,它只会显示以下内容:�,c++,character-encoding,ascii,non-ascii-characters,C++,Character Encoding,Ascii,Non Ascii Characters,有什么我能做的吗 顺便说一句,我使用: Linux(Mint) Visual Studio代码(集成终端) 如果我使用“符号,控制台会正确显示字符,因此控制台本身可能没有问题。您可以使用十六进制符号: char border = '\xcd'; 小程序: #include <iostream> using std::cout; using std::cin; int main() { cout << "border: \xcd\n"; const c
- Linux(Mint)
- Visual Studio代码(集成终端)
如果我使用
“
符号,控制台会正确显示字符,因此控制台本身可能没有问题。您可以使用十六进制符号:
char border = '\xcd';
小程序:
#include <iostream>
using std::cout;
using std::cin;
int main()
{
cout << "border: \xcd\n";
const char corner = '\xc9';
cout << "Upper left corner: " << corner << "\n";
cout << "Paused. Press ENTER to continue.\n";
cin.ignore(100000, '\n');
return 0;
}
#包括
使用std::cout;
使用std::cin;
int main()
{
cout非标准字符是非标准字符。在系统使用的编码中,该字符可能不适合单个字符。它不是ASCII字符。它可能是您将其存储为UTF8,在这种情况下,它存储为3个字节:0xE2 0x95 0x94您不使用ASCII操作系统,Linux通常是UTF-8,因此您需要打印3个字节提到字节Ted以获得正确的字符OK,然后我会找到一种方法,用字符串而不是字符来实现这一点。我猜ASCII最多只能保证代码127。更高的代码是竞争标准的西部领地。CP850也是“DOS扩展ASCII”。术语“扩展ASCII”“几乎从未精确到有用的程度。@Volper您、您的源代码编辑器和编译器是否同意使用哪种源代码字符编码?是哪种?我的编辑器和控制台使用UTF-8,不确定编译器(我使用g++),但如果自定义字符是在字符串中,则可以正常工作。我认为这是因为char
类型支持的字节数不超过1/2,这就是单引号不起作用的原因。