我正在用File.But写一些数据,它不能正确地写这个。代码:
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(); 它将文件显示为

发布于 2012-02-01 18:08:40
这可能是因为您错误地使用了CFile。CFile::Write的第一个参数应该是要将其字节写入文件的缓冲区。然而,testarr更像是一个“缓冲区的缓冲区”,因为testarr的每个元素都是一个字符串,而字符串本身就是一个字节序列。
相反,您需要做的是连接testarr的元素,然后调用CFile::Write。或者(可能更实用),遍历testarr,一次打印一个字符串,例如,对于您的特定示例,以下代码应该执行您正在寻找的操作:
for(int i = 0; i < 10; ++i)
{
gpFile.Write(testarr[i], strlen(testarr[i]));
}可能有一些内置的方法可以实现这一点,但我对MFC并不是很熟悉,因此在这方面我不会有太大的帮助。
https://stackoverflow.com/questions/9093844
复制相似问题