我正在开发一个 super 简单的程序,如果我们输入一个名字,它就会打印输入的名字。这很简单,但问题是我住在韩国,它是韩文(韩文字母表)所以它必须支持韩文
我试过这段代码:
#include <iostream>
#include <string>
using namespace std;
int main () {
string name = "";
cout << "이름을 입력하세요: "; getline(cin, name);
cout << "당신의 이름은 " << name << "입니다.";
return 0;
}
如果我们将其翻译成英语,它将是:
#include <iostream>
#include <string>
using namespace std;
int main () {
string name = "";
cout << "Enter your name: ";
getline(cin, name);
cout << "Your name is " << name << ".";
return 0;
}
看起来很简单。但是如果我们把韩文放在 cin
中,
Print:
Enter your name: 이름
Your name is .
然后就结束了。我想要的答案当然是:
Print:
Enter your name: 이름
Your name is 이름.
我已经尝试了所有方法,例如使用宽字符、更改系统区域设置和其他许多方法。 这是我试过的代码:
#include <iostream>
#include <string>
using namespace std;
int main () {
setlocale(LC_ALL, "Korean");
string name = "";
cout << "이름을 입력하세요: ";
getline(cin, name);
cout << "당신의 이름은 " << name << "입니다.";
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main () {
wstring name = "";
cout << "이름을 입력하세요: ";
getline(wcin, name);
wcout << "당신의 이름은 " << name << "입니다.";
return 0;
}
#include <iostream>
#include <string>
using namespace std;
int main () {
wstring name = "";
cout << "이름을 입력하세요: ";
getline(wcin, name);
cout << "당신의 이름은 ";
wcout << name;
cout << "입니다.";
return 0;
}
如果可以,请帮助我!
最佳答案
- 尝试检查 setlocale 函数的返回值,如果它返回 null,那么它就会失败,如果是这样,请尝试为韩国系统区域设置搜索其他名称。
- 如果您在第一段中没有遇到错误,请检查您的命令提示符区域设置:按 Windows+R,键入“cmd”并按 Enter。在打开的命令提示符窗口中键入“chcp”并按 Enter。您应该会看到如下所示的输出:
C:\Users\User>chcp
Active code page: 1251
1251 - 这是我的编码页面,意思是“windows cp-1251”。之后用谷歌搜索您的编码页面(您可以在互联网上找到每个符号及其十进制表示形式的表格)。
- 将程序中的某些韩文符号与编码表中的表示进行比较,您可以输出第一个符号的十进制值,如下所示:
int main () {
string name = "";
cout << "이름을 입력하세요: " << endl;
getline(cin, name);
cout << (int)name[0] << endl;
return 0;
}
如果您从程序中获得的数字与您编码页面中的相应数字不同,那么您肯定需要搜索另一个语言环境以在您的程序中设置,或者在您的终端中更改语言环境。
关于c++ - 我不能用 std::cin 输入韩文吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68035150/