21xrx.com
2024-09-20 05:50:21 Friday
登录
文章检索 我的文章 写文章
如何在C++中输入和显示中文
2023-06-23 07:54:49 深夜i     --     --
C++ 中文输入 中文显示

在C++编程中,有时候需要输入和显示中文字符,但由于其它编程语言不同,C++默认情况下是不支持中文字符的。不过,我们仍然可以通过一些方法来实现在C++中输入和显示中文字符。下面将介绍在C++中输入和显示中文字符的方法。

一、输入中文字符

在C++中输入中文字符有两种方法,一个是使用wchar_t类型,另一个是使用字符串类型。下面将分别介绍这两种方法。

1.使用wchar_t类型

在C++中,wchar_t类型代表宽字符类型,宽字符类型可以用来存储任意Unicode字符,包括中文字符。我们可以使用wcin和wcout来代替标准输入输出流cin和cout。

例如,下面的代码演示了如何使用wchar_t类型来输入和显示中文字符:


#include <iostream>

using namespace std;

int main()

  wchar_t ch;

  wcout << L"请输入中文字符:";

  wcin >> ch;

  wcout << L"你输入的中文字符是:" << ch << endl;

  return 0;

在上面的代码中,我们使用了L前缀来表示字符串是宽字符类型,使用wcout和wcin来进行输入输出操作。注意,使用宽字符类型时需要加上L前缀,否则编译会出错。

2.使用字符串类型

另一种方法是使用字符串类型,我们可以使用string类型代表字符串类型,不过需要在输入输出操作前设置中文环境。

例如,下面的代码演示了如何使用字符串类型来输入和显示中文字符:


#include <iostream>

#include <Windows.h>

#include <string>

using namespace std;

int main()

{

  SetConsoleOutputCP(65001); // 设置控制台为UTF-8编码

  string str;

  cout << "请输入中文字符:";

  getline(cin, str);

  cout << "你输入的中文字符是:" << str << endl;

  return 0;

}

在上面的代码中,我们使用了Windows.h头文件中的SetConsoleOutputCP函数来设置控制台为UTF-8编码,然后使用了getline函数来获取字符串类型输入。

二、显示中文字符

在C++中显示中文字符同样有两种方法,一个是使用ASCII码,另一个是输出UTF-8编码。

1.使用ASCII码

在C++中,每个字符都有一个对应的ASCII码,在输出中文字符时,我们只需要使用对应的ASCII码即可。例如,要输出“你好”两个字,可以使用下面的代码:


#include <iostream>

using namespace std;

int main()

{

  cout << char(228) << char(189) << char(160) << char(229) << char(165) << char(189) << endl;

  return 0;

}

在上面的代码中,我们使用了“你”的ASCII码对应的数字宽字符类型232和191和160,和“好”的ASCII码对应的数字宽字符类型229和165和189。

2.输出UTF-8编码

我们在输入中文字符时使用了UTF-8编码,而且大多数C++程序都是使用UTF-8编码的。为了输出中文字符,我们可以使用Windows.h头文件中的SetConsoleOutputCP函数来设置控制台为UTF-8编码,然后就可以使用cout来输出中文字符了。

例如,下面的代码演示了如何输出中文字符:


#include <iostream>

#include <Windows.h>

using namespace std;

int main()

{

  SetConsoleOutputCP(65001); // 设置控制台为UTF-8编码

  cout << "你好!" << endl;

  return 0;

}

在上面的代码中,我们使用了Windows.h头文件中的SetConsoleOutputCP函数来设置控制台为UTF-8编码,然后就可以使用cout来输出中文字符了。

总结

在C++中输入和显示中文字符可以通过不同的方法来实现,我们可以使用wchar_t类型或字符串类型来输入中文字符,并使用ASCII码或UTF-8编码来输出中文字符。

  
  

评论区

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