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

时间:2011-08-02 07:12:09

标签: c# c++ mfc

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#中创建一个同样包含文本数据a和二进制数据的文件。请让我知道用于创建此

的流类

2 个答案:

答案 0 :(得分:0)

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

文本模式唯一能做的就是在写入时将“\ n”转换为“\ r \ n”,在读取时将其转换回。由于该文件部分是二进制文件,因此无论如何都无法在常规文本编辑器中编辑,因此您无需进行该转换。如果该文件仅适用于您的应用程序,您只是不关心,如果它适用于其他应用程序,只需使用手动需要的任何换行序列。

答案 1 :(得分:0)

对于C#,可能this S.O. article可以为您提供所需的答案。

C#解决方案也可以指导您为c编写类似的内容,但我怀疑您是独立的,即您可以使用通用读/写文件。在C ++中,您可以使用operator>>operator<<对流进行格式化输入/输出。