是否真的可以使用 CFile 和 CStdio 类将数据附加到 MFC 中的文本文件?

Tar*_*pta 2 c++ mfc file-handling visual-c++

是否真的可以通过使用CFileCStdio类将数据附加到 MFC 中的文本文件中??如果是,那么如何?

我使用以下代码附加数据,但它只提供最新的(最后输入的)数据。

UpdateData(TRUE);
CStdioFile file_object;//(L"D://Docs//Temp.txt",
    CFile::modeCreate | CFile::modeReadWrite | CFile::modeRead); 
CString str = L"D://Docs//Temp.txt";
CString fc1, fc2;

BOOL bFile = file_object.Open(str, 
    CFile::modeCreate | CFile::modeReadWrite | CFile::modeRead);
if (bFile)
    file_object.Seek(file_object.GetLength(), CFile::end);

fc1.Format(L"%f", m_CelTemp);
file_object.WriteString(L"Temp in Celsius is:");     
file_object.WriteString(fc1);
file_object.WriteString(L"\n");

fc2.Format(L"%f", m_FarTemp);
file_object.WriteString(L"Temp in Fahrenheit is:");      
file_object.WriteString(fc2);
file_object.WriteString(L"\n");

UpdateData(FALSE); 
Run Code Online (Sandbox Code Playgroud)

Him*_*shu 6

这是您可以尝试的示例代码

CStdioFile file;
file.Open(_T("_FILE_PATH_HERE"),CFile::modeCreate|CFile::modeWrite|CFile::modeNoTruncate);
file.SeekToEnd();
file.WriteString(_T("Write Text Here\r\n")); // \r\n to move the cursor to the next line
file.Close();
Run Code Online (Sandbox Code Playgroud)

CFile::modeCreate如果没有文件存在,则创建一个新文件。如果文件已存在,则引发 CFileException。

CFile::modeNoTruncate如果文件不存在则创建一个新文件;否则,如果文件已存在,则将其附加到 CFile 对象。

CFile::modeWrite仅请求写访问。

file.SeekToEnd(); 将文件指针的值设置为文件的逻辑结尾。

  • 如果不存在文件,NoTruncate 不会创建文件。这是文档中的错误。自 2008 年以来就广为人知,这很有趣。 (2认同)