开发者社区> 问答> 正文

C++ fstream 读取汉字的问题:报错

函数目的:

        读取指定行数的汉字数据,每行读取不超过一定个数

使用方法:

        用fstream中的getline函数来读取每一行('\n'之前的最多为x个字节的数据),数据保存在CString中,然后我用CString中的Insert函数来将每一次读取的结果连接起来,最后输出

遇到问题:

        虽然能够成功读取,但是有些汉字变成了乱码,并且不能够从函数里面输出来传到别的函数里面使用,我知道,出现这个问题的原因是汉字是2字节的,但是一个txt文档里面有空格、半角标点符号等是一个字节的,程序如果按一定的字节数读取的话,很容易就会因为读到上述符号而使得读取汉字的时候出现只读到“半个”字的情况,再接下去读取后续文字就会因为偏移了一个字节而读成乱码

求解:

        怎样才能够避免读取汉字时因为1字节符号而产生偏移,最后造成乱码的情况发生?


展开
收起
kun坤 2020-06-06 16:42:04 831 0
1 条回答
写回答
取消 提交回答
  • 设置本地化

    ######设置本地化imbue()######

    你的汉字是什么编码的

    gbk就是一个字节<127为ascii,否则为二字节的汉字

    unicode是2字节

    utf-8是1-3字节不等,看字节前面高位1的个数……

    2020-06-06 16:42:10
    赞同 展开评论 打赏
问答分类:
C++
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
使用C++11开发PHP7扩展 立即下载
GPON Class C++ SFP O;T Transce 立即下载
GPON Class C++ SFP OLT Transce 立即下载