c++ - 我不能用 std::cin 输入韩文吗?

标签 c++ cin

我正在开发一个 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;
}

如果可以,请帮助我!

最佳答案

  1. 尝试检查 setlocale 函数的返回值,如果它返回 null,那么它就会失败,如果是这样,请尝试为韩国系统区域设置搜索其他名称。
  2. 如果您在第一段中没有遇到错误,请检查您的命令提示符区域设置:按 Windows+R,键入“cmd”并按 Enter。在打开的命令提示符窗口中键入“chcp”并按 Enter。您应该会看到如下所示的输出:
C:\Users\User>chcp
Active code page: 1251

1251 - 这是我的编码页面,意思是“windows cp-1251”。之后用谷歌搜索您的编码页面(您可以在互联网上找到每个符号及其十进制表示形式的表格)。

  1. 将程序中的某些韩文符号与编码表中的表示进行比较,您可以输出第一个符号的十进制值,如下所示:
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/

相关文章:

c++ - 双倍,C++中的新功能?

c++ - 在 vector<string> 中存储两个间隔字符串

c++ - 将字符串输入到 int 会在 c/c++ 中产生错误的输出

c++ - 如何获得一组带有空格的单词作为 C 中的一个输入?

c++ - 尝试将指针分配给结构时程序崩溃

C++象棋 table 华大图形

c++ - SFML 鼠标 getPosition 无法正常工作

c++ - C/C++。输入行数字

c++ - 如何在不使用 getline() 的情况下接受不同行中的整数输入值?

c++ - 在 C++ 中放置内联函数的最佳实践