21xrx.com
2024-11-22 08:13:33 Friday
登录
文章检索 我的文章 写文章
C++ 如何输入中文?
2023-06-24 03:07:06 深夜i     --     --
C++ 输入 中文

在 C++ 中,要输入中文需要进行一些特殊的设置和处理。因为 C++ 默认使用的是 ASCII 码,而中文的编码一般是使用 Unicode 码或者 GBK 码。因此,我们需要对字符编码进行转换,才能正确地输入和输出中文。

下面是一些方法可以在 C++ 中输入中文:

1. 使用宽字符类型

在 C++ 中,wchar_t 是一种宽字符类型,可以用来表示 Unicode 字符和 GBK 码中的汉字。要输入中文,我们可以使用类似下面的代码:


#include <iostream>

using namespace std;

int main()

  wchar_t chinese = L'中';

  wcout << chinese << endl;

  return 0;

在上面的代码中,我们使用 wchar_t 定义了一个宽字符类型的变量 chinese,将汉字“中”赋值给它,并使用 wcout 输出这个变量。需要注意的是,在输出时使用的是 wcout,而不是常规的 cout。

2. 使用代码页转换

除了使用宽字符类型,我们还可以使用 WinAPI 中的 MultiByteToWideChar 函数进行代码页转换。这个函数可以将 GBK 码中的汉字转换为 Unicode 字符。

下面是一个简单的示例代码:


#include <windows.h>

#include <iostream>

using namespace std;

int main() {

  char chinese_gbk[] = "中文";

  wchar_t chinese_uni[10];

  int len = MultiByteToWideChar(CP_ACP, 0, chinese_gbk, -1, chinese_uni, 10);

  wcout << chinese_uni << endl;

  return 0;

}

在上面的代码中,我们首先定义了一个 GBK 码字符串 chinese_gbk,然后定义一个长度为 10 的宽字符类型数组 chinese_uni,并调用 MultiByteToWideChar 函数进行代码页转换。需要注意的是,CP_ACP 表示当前系统的代码页,默认是 GBK,这样就可以把字符串“中文”转换成 Unicode 编码,最后使用 wcout 输出。

3. 设置控制台代码页

如果在控制台中输入中文,还需要设置控制台的代码页。可以使用 SetConsoleOutputCP 函数来设置输出的代码页,使用 SetConsoleCP 函数来设置输入的代码页。

下面是一个示例代码,演示如何在控制台中正确输入和输出中文:


#include <windows.h>

#include <iostream>

using namespace std;

int main() {

  SetConsoleOutputCP(65001); // 设置输出的代码页为 UTF-8

  SetConsoleCP(65001); // 设置输入的代码页为 UTF-8

  cout << "请输入中文:" << endl;

  string input;

  getline(cin, input);

  wstring_convert<codecvt_utf8<wchar_t>> conv;

  wstring output = conv.from_bytes(input);

  wcout << "您输入的中文是:" << output << endl;

  return 0;

}

在上面的代码中,我们首先使用 SetConsoleOutputCP 函数设置输出的代码页为 UTF-8,然后设置输入的代码页也为 UTF-8,接着使用 getline 函数从控制台中读取输入的字符串,使用 wstring_convert 类进行字符编码转换,最后使用 wcout 输出中文字符串。需要注意的是,由于 getline 函数只能读取 ASCII 码,因此我们需要进行字符编码转换。

  
  

评论区

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