[C++]ifstream和getline获取中文乱码解决方案

读取Ini文件的类踩了一个坑,当配置文件有中文参数时候,没法正确读取。读到的全是乱码。查询了很久才发现ifstream本身就无法正常读取包含中文路径的文本(具体的解决方案就不细说了网上一堆)。这里主要讲一下getline读取到乱码的解决办法。

原文连接:点击这里查看原博主文章

添加一个函数转换一下编码

std::string UTF8ToGB(const char* str)
{
    std::string result;
    WCHAR *strSrc;
    LPSTR szRes;

    //获得临时变量的大小
    int i = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
    strSrc = new WCHAR[i + 1];
    MultiByteToWideChar(CP_UTF8, 0, str, -1, strSrc, i);

    //获得临时变量的大小
    i = WideCharToMultiByte(CP_ACP, 0, strSrc, -1, NULL, 0, NULL, NULL);
    szRes = new CHAR[i + 1];
    WideCharToMultiByte(CP_ACP, 0, strSrc, -1, szRes, i, NULL, NULL);

    result = szRes;
    delete[]strSrc;
    delete[]szRes;

    return result;
}

在使用getline的时候,把字符转换一下即可

std::string line;
while (std::getline(fin, line))
{
std::string str = UTF8ToGB(line.c_str()).c_str();
}

  

(0)

相关推荐

  • 密码-自动进行扩展验证(EV)代码签名

    我们最近购买了DigiCert EV代码签名证书. 我们能够使用signtool.exe对.exe文件进行签名. 但是,每次我们签名文件时,都会提示您输入SafeNet eToken密码. 我们如何通 ...

  • Beamer幻灯片中listings包的中文注释乱码解决方案

    Beamer幻灯片中listings包的中文注释乱码解决方案 Beamer目前似乎已经是LaTeX下演示文稿(PPT.幻灯片)的标准,Beamer做演示文稿象写程序代码.于是,如果文稿内容本来就含有程 ...

  • SAP UI5 应用的中文乱码问题

    如下图所示: 我使用 sap-language=ZH 的 url 参数,试图访问我 SAP UI5 应用的中文版时,发现标题显示为乱码: https://er9.wdf.sap.corp:44300/ ...

  • python笔记5-python2写csv文件中文乱码问题

    前言 python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode.decode. 当list.tuple.dict里面有中文时,打印出来的是Unicode编码,这个是无解的. 对 ...

  • jmeter压测学习14-jmeter返回内容中文乱码问题

    前言 在使用 jmeter 测试的时候,有些 html 页面返回的中文内容显示乱码,导致无法正常查看中文的内容 乱码场景 在打开百度页面时,返回的html内容中文显示乱码,如下图所示 出现乱码的原因, ...

  • (7条消息) 彻底解决Qt中文乱码以及汉字编码的问题(UTF

    尊重作者,支持原创,如需转载,请附上原地址:https://blog.csdn.net/libaineu2004/article/details/19245205 这篇文章有点长,内容有点多,如果时间 ...

  • C语言-解决Windows cmd utf8中文乱码

    在Windows中使用C语言开发程序时,当需要使用printf打印一些中文字符时,发现终端输出的字符竟然是乱码的(我的C语言源文件的编码格式是UTF-8),后来查了下这个问题出现的原因,然后顺利的解决 ...

  • Ubuntu的中文乱码问题

    目标:使系统/服务器支持中文,能够正常显示. 1.首先,安装中文支持包language-pack-zh-hans: $ sudo apt-get install language-pack-zh-ha ...

  • .Net Core 读取文件中文乱码

    首先,要知道.Net Core和.Net Framework两个环境下很多东西是不同的,接下来要说的这个就是其中一个. Encoding.Default,在  .NET Framework 中,Def ...

  • phpMyAdmin中文乱码问题(上)

    phpMyAdmin在表中添加数据时,发现数据变成了"?"!其实是字集错了.让我们跟着小白鼠看看该怎样修正吧! 第一步:更改表的字符集 点击操作 把表的字符集换一换 保存即可 第二 ...