在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,这就是单引号不起作用的原因。