首页 > 解决方案 > C++ 通过 ifsteam 或 cin 读取重音字符

问题描述

所以我是 C++ 的初学者,我想以某种方式获得带有重音字符的文本。我已经阅读了文档和其他问题,但没有一个对我有用。我真的不明白。这是文件和输出。

文本文件:

abc
def
árvíztűrő tükörfúrógép

控制台输出:

abc
def
árvĂ­ztĹ+rĹ' tĂĽkörfĂşrĂłgĂcp

有人请帮助我,我怎样才能在控制台上获得与文件中​​相同的文本?有人可以向我解释一下,这是怎么回事?(即SetLocale().imbue()是什么)谢谢您的帮助!

代码:

#include <iostream>
#include <fstream>
#include <string>
#include <locale>

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

    std::string txt;
    std::ifstream fstream;

    fstream.open("C:\\Dev\\alma.txt");
    fstream.imbue(std::locale(""));
    
    while (getline(fstream, txt)) 
    {
        std::cout << txt << "\n";
    }

    std::cout << "\n";
    fstream.close();
    
}

标签: c++character-encodingiostream

解决方案


推荐阅读