C++ 用ifstream 类读写文件乱码的有关问题
C++ 用ifstream 类读写文件乱码的问题!
最近在做有关文件读写的作业,没做之前,以为只是文件读写而已,认为很简单,可是一做发现问题多多!!!!具体如下:
文件编码:UTF-8.
打开文件方式:ifstream inFile("intext.txt", std::ios::binary|std::ios::in )
ofstream outFile("outtext.txt", std::ios::binary|std::ios::out )
读取文件:
char p[1024 +1 ];
inFile.read( p, 1024 );
p[1024] = '\0';
std::string str( p );
//对str 进行一些操作,只要是删除部分文件。
std::cout<<str;//中文部分乱码了
写入文件:
outfile.write( str, 1024 );//乱码了,部分中文可以看到,部分不见了。
请问如何解决问题啊?菜鸟求教中。。。
另外:对于字符串的操作总是涉及到编码的问题,常常感到束手无策,比如;长字符,ansi字符,还有等等,请问该如何避免字符之间编码的问题啊。最好是不要太依赖平台啊!
谢谢!
------解决方案--------------------
string对象是不能直接用二进制读写的。
------解决方案--------------------
你要想到, string类型其实是一个很复杂的类型的!
------解决方案--------------------
c++中,char, string 都是ANSI字符,wchar, wstring是UTF-16。
最近在做有关文件读写的作业,没做之前,以为只是文件读写而已,认为很简单,可是一做发现问题多多!!!!具体如下:
文件编码:UTF-8.
打开文件方式:ifstream inFile("intext.txt", std::ios::binary|std::ios::in )
ofstream outFile("outtext.txt", std::ios::binary|std::ios::out )
读取文件:
char p[1024 +1 ];
inFile.read( p, 1024 );
p[1024] = '\0';
std::string str( p );
//对str 进行一些操作,只要是删除部分文件。
std::cout<<str;//中文部分乱码了
写入文件:
outfile.write( str, 1024 );//乱码了,部分中文可以看到,部分不见了。
请问如何解决问题啊?菜鸟求教中。。。
另外:对于字符串的操作总是涉及到编码的问题,常常感到束手无策,比如;长字符,ansi字符,还有等等,请问该如何避免字符之间编码的问题啊。最好是不要太依赖平台啊!
谢谢!
C++
乱码
iOS
编码
------解决方案--------------------
string对象是不能直接用二进制读写的。
------解决方案--------------------
你要想到, string类型其实是一个很复杂的类型的!
------解决方案--------------------
c++中,char, string 都是ANSI字符,wchar, wstring是UTF-16。