2009-09-27 43 views
2

字符集是Unicode。我想將一串CString類型寫入一個文件,然後從文件中讀出。 我寫的字符串與CFile的文件:: Write()方法:如何使用Unicode中的CFile :: Read()從文件中獲取CString對象?

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

這裏有一個問題:我想獲得含有strSample的內容的文件的CString的。我該怎麼做?

非常感謝!

+2

請注意,對GetBuffer的調用是多餘的,可能會導致問題,因爲它有一些副作用。在這裏,你需要的只是一個LPCTSTR,所以只需使用(LPCTSTR)strSample。它是安全的,並且更加高效(只是不要以這種方式修改字符串)。如果您確實調用GetBuffer,請確保在事後調用ReleaseBuffer。 – eran 2009-09-27 19:45:13

+0

當我使用(LPCTSTR)strSample將字符串寫入文件時,這沒關係。但是,如何用(LPCTSTR)strsample從文件中讀取字符串? – quantity 2009-09-28 03:45:36

回答

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

我想你忘記加上「\ 0」末

strSample.GetLength()+ 1

0

我會嘗試這一點,因爲它可以是文件較大比讀取的東西(DOS樣式的結束行)。 Read不會設置最終的\ 0,但是如果沒有用-1調用,ReleaseBuffer顯然會這樣做。

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