21xrx.com
2024-12-23 02:04:06 Monday
登录
文章检索 我的文章 写文章
C++输出汉字
2023-07-04 15:33:04 深夜i     --     --
中文输出 C++编程 宽字符类型 Unicode编码 控制台设置

在C++编程语言中,要想输出汉字,需要进行一些特殊的设置,因为英文字符集和汉字字符集是不一样的。

首先,为了输出汉字,我们需要在代码的开头加入以下三个头文件:


#include <iostream>

#include <cstdio>

#include <windows.h>

其中,`iostream` 是用于输入输出的头文件,`cstdio` 是用于格式化输出的头文件,`windows.h` 则是 windows 系统特有的头文件。

接着,我们需要设置控制台的代码页,代码页可以理解为字符集的一种。在 Windows 中,GB2312 是常见的用于汉字的字符集。使用下面的代码即可设置代码页为 GB2312:


SetConsoleOutputCP( 936 );

然后,在输出之前,需要先将字符集转换为宽字符,这样才能正确输出汉字。使用下面的代码将字符转换为宽字符:


wchar_t* w_text = new wchar_t[text.length() + 1];

memset(w_text, 0, sizeof(wchar_t) * (text.length() + 1));

MultiByteToWideChar(CP_UTF8, 0, text.c_str(), -1, w_text, text.length());

在转换完字符之后,我们就可以通过 cout 或 wcout 来输出汉字了,例如:


wcout << w_text;

完整的例子代码如下:


#include <iostream>

#include <cstdio>

#include <windows.h>

using namespace std;

int main()

{

  SetConsoleOutputCP(936); // 设置代码页

  string text = "汉字"; // 原字符串

  wchar_t* w_text = new wchar_t[text.length() + 1]; // 存储宽字符的数组

  memset(w_text, 0, sizeof(wchar_t) * (text.length() + 1)); // 初始化数组

  MultiByteToWideChar(CP_UTF8, 0, text.c_str(), -1, w_text, text.length()); // 将字符转换为宽字符

  wcout << w_text; // 输出汉字

  delete[] w_text; // 释放数组内存

  return 0;

}

运行上述代码,就会在控制台中输出“汉字”这两个汉字。需要注意的是,代码页的设置和字符集的转换都是必须的,否则输出的可能是乱码或者不完整的汉字。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复