gpt4 book ai didi

c++ - getline() 不能正确读取重音字符

转载 作者:太空狗 更新时间:2023-10-29 20:33:15 29 4
gpt4 key购买 nike

我正在尝试使用 getline() 命令从用户那里获取重音字符,但它没有正确打印它们。

我试图将一些库包含为 locale,但没有成功。

这是我的代码:

#include <iostream>
#include <cstdlib>
#include <string>
#include <locale>

using namespace std;

class Pers {
public:
string name;
int age;
string weapon;
};

int main()
{
setlocale(LC_ALL, "");
Pers pers;

cout << "Say the name of your character: ";
getline(cin, pers.name);
cout << pers.name;
}

当我输入:Mark Coração,这就是我得到的:

Accented characters aren't displaying correctly

我该如何解决?

最佳答案

其实问题不是出在getline()

std::cout(分别为 std::cin)不支持特殊字符。为此,您必须使用使用宽字符的 std::wcout(分别为 std::wcin)(标准字符的大小限制了您可以在ascii 表)。
你也需要使用更大的字符来存储特殊字符,宽字符就是这种情况。
std::string 处理标准字符,std::wstring 处理宽字符。

一种方法可以是:

std::wstring a(L"Coração");
std::wcout << a << std::endl;

输出:

Coração


要使其与 getline() 一起工作:

std::wstring a;
getline(std::wcin, a)
std::wcout << a << std::endl;

希望对您有所帮助。

关于c++ - getline() 不能正确读取重音字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56362464/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com