同一文件中的文本和二进制数据

本文关键字:二进制 数据 文本 文件 | 更新日期: 2023-09-27 18:04:18

CString strFile = "c:''test.txt";
CStdioFile aFile;
UINT nOpenFlags = CFile::modeWrite | CFile::modeCreate | CFile::typeText;
CFileException anError;
if (!aFile.Open(strFile, nOpenFlags, &anError))
{
    return false
}
int nSize = 4*sizeof(double);
double* pData = new double[2];
CString strLine, str;
// Write begin of header
strLine = _T(">>> Begin of header <<<'n");
aFile.WriteString(strLine);
// Retrieve current position of file pointer
int lFilePos = (long) aFile.GetPosition();
// Close file
aFile.Close();
nOpenFlags = CFile::modeWrite | CFile::typeBinary;
if (!aFile.Open(strFile, nOpenFlags, &anError))
{
    return false;
}
for(int i = 0 ; i < 2 ; i++)
{
    pData[i] = i;     
}
// Set position of file pointer behind header
aFile.Seek(lFilePos, CFile::begin);
// Write complex vector
aFile.Write(pData, nSize);
// Write complex vector
aFile.Write(pData, nSize);
// Close file
aFile.Close();

意图创建一个包含文本数据和二进制数据的文件。这个代码是用MFC编写的。我想在c#中创建一个包含文本数据和二进制数据的文件。请告诉我使用哪个流类来创建这个

同一文件中的文本和二进制数据

文本可以写成二进制数据=>只需对整个文件使用二进制模式即可。

文本模式所做的唯一事情是在写时将"'n"转换为"'r'n",在读时再转换回来。由于该文件部分是二进制的,因此无论如何都不能在常规文本编辑器中编辑,因此不需要进行转换。如果该文件仅用于您的应用程序,则不必关心;如果该文件用于其他应用程序,则只需手动使用所需的任何换行符。

关于c#,也许这篇S.O.文章可以给你想要的答案。

c#解决方案也可以指导你为C编写类似的东西,但我怀疑你是自己的,也就是说,你可以使用通用的读写文件。在c++中,您可以使用operator>>operator<<从/到流进行格式化的输入/输出。