前提:VS2010 ,MFC ,文本文件为ANSI格式。
读文件:
CString str,fileContent;CStdioFile myFile, File;if(myFile.Open(GeneralUtils::GetModuleDir()+_T(\\mx.txt), CFile::modeRead)){ //读取 while(myFile.ReadString(str)) { str = str + _T("\n"); ReadStringCharToUnicode(str); fileContent = fileContent + str; } myFile.Close();}
写文件:
*.h
#include <locale.h>
*.cpp
setlocale(LC_CTYPE,"chs");myFile.Open(GeneralUtils::GetModuleDir()+_T(\\mx2.txt), CFile::modeWrite | CFile::modeCreate); myFile.WriteString(fileContent);myFile.Close();
void ReadStringCharToUnicode(CString &str){ char *szBuf = new char[str.GetLength() + 1];//注意“+1”,char字符要求结束符,而CString没有 memset(szBuf, '\0',str.GetLength());
int i; for ( i = 0 ; i < str.GetLength(); i++) { szBuf[i] = (char)str.GetAt(i); } szBuf[i] = '\0';//结束符。否则会在末尾产生乱码。
int nLen; WCHAR *ptch; CString strOut; if(szBuf == NULL) { return ; } nLen = MultiByteToWideChar(CP_ACP, 0, szBuf, -1, NULL, 0);//获得需要的宽字符字节数 ptch = new WCHAR[nLen]; memset(ptch, '\0', nLen); MultiByteToWideChar(CP_ACP, 0, szBuf, -1, ptch, nLen); str.Format(_T("%s"), ptch);
if(NULL != ptch) delete [] ptch; ptch = NULL;
if(NULL != szBuf) delete []szBuf; szBuf = NULL; return ;}
转载于:https://www.cnblogs.com/go2anywhere/p/4708414.html
相关资源:解决读写包含汉字的txt文件时乱码的问题