CStdioFile.WriteString无法处理中文
CStdioFile 的bug,把工程的字符集属性 改成 使用多字节字符集 就可以了,,,,具体设置方法如:打开项目属性-->配置属性-->常规-->字符集-->改成 使用多字节字符集
示例方法如下:
#include<afxwin.h>
#include<iostream.h>
#define MAX_LENGTH 1024
void main()
{
CStdioFile stdiofile;
char szPath[MAX_LENGTH] = {0};
cout << "请你输入你要查看文件的路径:" << endl;
cin >> szPath;
stdiofile.Open(szPath, CStdioFile::modeReadWrite);
CString strValue;
stdiofile.ReadString(strValue);
cout << "所查看文件的内容为:" << strValue << endl;
CString strWriteValue;
cout << "请你输入你要写入文件的路径:" << endl;
cin >> szPath;
stdiofile.Open(szPath, CStdioFile::modeReadWrite || CStdioFile ::modeCreate);
char szValue[MAX_LENGTH] = {0};
cout << "请你输入所写内容:"<< endl;
cin >> szValue;
stdiofile.WriteString(szValue);
cout << "所写入文件的内容为:" << szValue << endl;
}
CStdioFile
CStdioFile是CFile的派生类,对文件进行流式操作,对于文本文件的读写很有用处,可按行读取写入。
//写入数据
CString strValue = "Hello World!";
file.WriteString(strValue);
//读取数据
CString strRead;
file.ReadString(strRead);
当文件存在多行数据需要逐行读取时,可用函数BOOL CStdioFile::ReadString(CString& rString),当遇到"\n "时读取截断,如果文件未读完,返回true,否则返回false。
评论