C++输入汉字

刚开始以为只需要充宽字符存储就可以了,实际不然,

还得加:

imbue(locale(“chs”));

C++里面用L宏的时候只是说是宽字符,但是并不一定是Unicode,也就是说具体使用什么字符集要程序员自己去设定,这就是imbue的作用,那你文件里不能输入汉字也是这个问题,你只要象下面一样设置下就可以了:
wchar_t wch = L’我; UNICODE 码
wchar_t wch2 = ‘我’ ; GB2312 码。

1
2
3
4
in.imbue(locale("chs"));   
in>>text;   
out.imbue(locale("chs"));   
out<<text;

这里不好解释,直接给出一个例子,看了例子就什么都懂了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// Tanky Woo
// bondini.cpp
#include <iostream>
#include <string>
using namespace std;
int main()
{
	cout << "Input your name:" << endl;
	wchar_t ch;
	wcin.imbue(locale("chs")); 
	wcin >> ch;
	wcout.imbue(locale("chs")); 
	wcout << ch << endl;
	getchar();
	cout << "\aOperation \"HyperHype\" is now activated!\n";
	cout << "Enter your agent code:________\b\b\b\b\b\b\b\b";
	string code;
	cin >> code;
	cout <<"\aYou entered " << code << "...\n";
	cout << "\aCode verified! Proceed with Plan Z3!\n";
	return 0;
}

发布者

Tanky Woo

Tanky Woo,[个人主页:https://tankywoo.com] / [新博客:https://blog.tankywoo.com]

《C++输入汉字》有228个想法

发表评论

电子邮件地址不会被公开。 必填项已用*标注