马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
CStdioFile mfile;//创建文件对象
//CStdioFile是CFile的子类
BOOL b= mfile.Open(_T("D:\\测试.txt"), CFile::modeCreate| CFile::modeNoTruncate| CFile::modeReadWrite| CFile::typeUnicode,NULL);//打开文件
CString str;
bool b1=mfile.ReadString(str);//读取一行文本
/*
参数1:CString& rString 对 CString 对象的引用,该对象将在函数返回时包含字符串
返回值:在没有读取任何数据的情况下到达文件尾,则为 FALSE
包含\r,读完之后移动文件指针
注意:CStdioFile::ReadString()函数默认将文本文件视为ANSI编码进行读取
如果是Unicode就加上CFile::typeUnicode
*/
b1 = mfile.ReadString(str);//读取一行文本
mfile.WriteString(_T("888"));//写入一行
/*
参数:LPCTSTR lpsz 指定指向包含以 null 结尾的字符串的缓冲区的指针
终止空字符 (\0) 不会写入文件。 此方法会将 lpsz 中的换行符作为回车-换行符对写入文件中
*/
mfile.WriteString(_T("999"));
mfile.Close();//关闭文件
我的问题:WriteString函数没有写入
根据你提供的代码,你使用了 CStdioFile类的 WriteString函数来向文件写入一行文本。但问题是你在调用 WriteString函数后发现文件没有被写入。
有几个可能导致这种情况的原因:
1. 文件没有成功打开:在打开文件之前,确保目标文件 D:\\测试.txt存在并且可写。你可以检查 Open函数的返回值 b,如果为 FALSE,表示文件打开失败。
2. 文件指针位置不正确:在调用 WriteString函数之前,确认文件指针指向了你期望的位置。可以尝试在调用 WriteString函数之前使用 SeekToEnd函数将文件指针移动到文件末尾。
3. 字符串写入失败:确保你要写入的字符串是有效的,并且没有被其他地方修改。你可以在调用 WriteString函数之前打印输出要写入的字符串,以确认其内容正确无误。
以下是修改后的示例代码,用于检查和解决这些问题:
CStdioFile mfile; // 创建文件对象
BOOL b = mfile.Open(_T("D:\\测试.txt"), CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite | CFile::typeUnicode, NULL); // 打开文件
if (!b) {
AfxMessageBox(_T("文件打开失败")); // 弹出错误消息框
return;
}
CString str;
bool b1 = mfile.ReadString(str); // 读取一行文本
if (!b1) {
AfxMessageBox(_T("读取文件失败")); // 弹出错误消息框
mfile.Close();
return;
}
b1 = mfile.ReadString(str); // 读取一行文本
if (!b1) {
AfxMessageBox(_T("读取文件失败")); // 弹出错误消息框
mfile.Close();
return;
}
mfile.SeekToEnd(); // 将文件指针移动到文件末尾
mfile.WriteString(_T("888")); // 写入一行
mfile.WriteString(_T("999"));
mfile.Close(); // 关闭文件
通过对上述问题的检查和修正,希望你能成功地使用 WriteString函数向文件写入内容。如果你有任何其他问题,请随时提问。我会尽力帮助你解决。
如果问题已经解决,请设置最佳答案
|