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字符,还有等等,请问该如何避免字符之间编码的问题啊。最好是不要太依赖平台啊!
       谢谢!
C++ 乱码 iOS 编码

------解决方案--------------------
string对象是不能直接用二进制读写的。
------解决方案--------------------
C++ 用ifstream 类读写文件乱码的有关问题

你要想到, string类型其实是一个很复杂的类型的!
------解决方案--------------------
引用:
看是它里面封装了很多函数,可以很方便地对字符串操作。而且它里面不也是通过数组来存储数据的吗?
另外,直接输出数组里面的值也是乱码啊!!

c++中,char, string 都是ANSI字符,wchar, wstring是UTF-16。