C++;通过ifsteam或cin读取重音字符 我是C++的初学者,我想以某种方式获得带有重音字符的文本。 我读过文件和其他问题,但都不适合我。 我真的不明白。这是文件和输出

C++;通过ifsteam或cin读取重音字符 我是C++的初学者,我想以某种方式获得带有重音字符的文本。 我读过文件和其他问题,但都不适合我。 我真的不明白。这是文件和输出,c++,character-encoding,iostream,C++,Character Encoding,Iostream,文本文件: abc def árvíztűrő tükörfúrógép 控制台输出: abc def árvĂ­ztĹ+rĹ' tĂĽkörfĂşrĂłgĂcp 有人请帮帮我,我怎样才能在控制台上获得与文件中相同的文本? 谁能给我解释一下,这里发生了什么事?(即,什么是SetLocale()和.imbue()) 谢谢你的帮助 代码: #包括 #包括 #包括 #包括 int main() { setlocale(LC_ALL,“”); std::string-txt; std::ifst

文本文件:

abc
def
árvíztűrő tükörfúrógép
控制台输出:

abc
def
árvĂ­ztĹ+rĹ' tĂĽkörfĂşrĂłgĂcp
有人请帮帮我,我怎样才能在控制台上获得与文件中相同的文本? 谁能给我解释一下,这里发生了什么事?(即,什么是SetLocale().imbue()) 谢谢你的帮助

代码:

#包括
#包括
#包括
#包括
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::您是否尝试过
wstring/wifstream/wcout
?另外,您的环境是什么,是Windows吗?文件是什么编码?您的终端使用什么编码?是的,Windows。对于
wcout
,我需要
wstring
,对吗?如何将
getline()
与wstring一起使用?在哪里可以看到终端编码?
#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();
    
}