如何从Unicode中的CFile :: Read()文件中获取CString对象?

时间:2009-09-27 07:57:49

标签: c++ unicode cstring cfile

charset是Unicode。我想在文件中写一个CString类型的字符串,然后从文件中读出来。 我用CFile :: Write()方法将字符串写入文件:

int nLen = strSample.GetLength()*sizeof(TCHAR);
file.Write(strSample.GetBuffer(), nLen);

这是一个问题:我想从包含strSample内容的文件中获取CString。我该怎么办?

非常感谢!

3 个答案:

答案 0 :(得分:5)

UINT nBytes = (UINT)file.GetLength();
int nChars = nBytes / sizeof(TCHAR);
nBytes = file.Read(strSample.GetBuffer(nChars), nBytes);
strSample.ReleaseBuffer(nChars);

答案 1 :(得分:0)

我想你忘了在最后加上'\ 0'

strSample.GetLength()+ 1

答案 2 :(得分:0)

我会尝试这个,因为它可能是文件大于读取的内容(DOS样式结束行)。 Read没有设置最终的\ 0,但是ReleaseBuffer显然没有,如果没有调用-1。

UINT nBytes = (UINT)file.GetLength();
UINT nBytesRead = file.Read(strSample.GetBuffer(nBytes+1), nBytes);
strSample.ReleaseBuffer(nBytesRead);