none
wfsteam 的read 结果不对,每个字符都以'\0'为空终止,如何正确使用 wfsteam ? RRS feed

  • 问题

  • 大家好,下面是我的代码,1.txt写入的数据都是unicode数据,但是读取到 szOut 结果不正确!

            wfsteam ifs;
    ifs.imbue(locale("chs"));
    ifs.open(L"C:\\1.txt"), ios::in | ios::binary);
    if (! ifs.good()) { 
    return FALSE;

    stringstreamT buffer;
    buffer << ifs.rdbuf();  
    szOut=buffer.str();//这里的结果不对
    ifs.close();

      szOut的内存地址结果:

    

      1.txt 文件的数据:

    请问 wfsteam  如何正确使用?

    2020年1月6日 12:44

答案

  • 如果你不是想要结果,只是单纯研究api,那对于wfsteam的用法是,c++17之前用std::codecvt_utf16<wchar_t, 0x10ffff, std::consume_header>来指定local,这个上面已提到。对于c++17和之后,wfsteam需改为fstream,然后按char读取,再自行转换为wchar_t,或使用MultiByteToWideChar。
    • 已标记为答案 Neko_NoW 2020年1月15日 9:32
    2020年1月15日 4:07

全部回复