0

我在文件中写入了一些数据。但它没有正确写入。代码:

CString sFileName = "C:\\Test.txt";
CFile gpFile;

    CString testarr[10] = {"Tom","Ger","FER","DER","SIL","REM","FWE","DWR","SFE","RPOP"};

    if (!gpFile.Open( sFileName,CFile::modeCreate|CFile::modeWrite))
    {
        AfxMessageBox( sFileName + (CString)" - File Write Error");      
        return;
    }
   else
   {
      gpFile.Write(testarr,10);
   }

    AfxMessageBox("Completed");
    gpFile.Close(); 

它将文件显示为 在此处输入图像描述

4

1 回答 1

2

那可能是因为你使用CFile不正确。第一个参数CFile::Write应该是一个缓冲区,您希望将其字节写入文件。然而,testarr它更像是一个“缓冲区的缓冲区”,因为每个元素testarr都是一个字符串,而一个字符串本身就是一个字节序列。

相反,您需要做的是连接 的元素testarr,然后调用CFile::Write. 或者(可能更实用),一次迭代testarr打印每个字符串,例如对于您的特定示例,以下内容应该可以满足您的需求:

for(int i = 0; i < 10; ++i)
{
    gpFile.Write(testarr[i], strlen(testarr[i]));
}

可能有一些内置的方法可以做到这一点,但我对 MFC 不是很熟悉,所以我不会在那里提供太多帮助。

于 2012-02-01T10:08:39.650 回答