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和二进制数据的文件。请让我知道用于创建此
的流类答案 0 :(得分:0)
文本可以写成二进制数据=&gt;只需对整个文件使用二进制模式即可完成。
文本模式唯一能做的就是在写入时将“\ n”转换为“\ r \ n”,在读取时将其转换回。由于该文件部分是二进制文件,因此无论如何都无法在常规文本编辑器中编辑,因此您无需进行该转换。如果该文件仅适用于您的应用程序,您只是不关心,如果它适用于其他应用程序,只需使用手动需要的任何换行序列。
答案 1 :(得分:0)
对于C#,可能this S.O. article可以为您提供所需的答案。
C#解决方案也可以指导您为c编写类似的内容,但我怀疑您是独立的,即您可以使用通用读/写文件。在C ++中,您可以使用operator>>
和operator<<
对流进行格式化输入/输出。