C++ fstream 读取汉字的问题

CodeZero 发布于 2013/07/22 20:07
阅读 1K+
收藏 0

函数目的:

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

使用方法:

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

遇到问题:

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

求解:

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


加载中
0
0
蚂蚁一样工作
蚂蚁一样工作
设置本地化imbue()
0
刘地
刘地

你的汉字是什么编码的

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

unicode是2字节

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

返回顶部
顶部