2009-09-27 4 views
2

charset은 유니 코드입니다. CString 형식의 문자열을 파일에 쓰고 나중에 파일에서 읽으 려합니다. 여기 유니 코드에서 CFile :: Read()를 사용하여 파일에서 CString 개체를 가져 오는 방법은 무엇입니까?

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

는 질문 : 나는 strSample의 내용을 포함하는 파일에서 CString을을 가져올 나는 개의 cfile 가진 파일 : 쓰기() 메소드로 문자열을 작성합니다. 내가 어떻게 해?

대단히 감사합니다!

+2

GetBuffer에 대한 호출이 중복되어 일부 부작용이 있으므로 문제가 발생할 수 있습니다. 여기에 필요한 것은 LPCTSTR이므로 LPCTSTR strSample 정도만 사용하십시오. 안전하고 훨씬 효율적입니다. (단지 문자열을 그렇게 수정하지 마십시오.) GetBuffer를 호출하면 나중에 ReleaseBuffer를 호출해야합니다. – eran

+0

(LPCTSTR) strSample을 사용하여 문자열을 파일에 쓸 때도 문제가 없습니다. 하지만 (LPCTSTR) strsample 파일에서 문자열을 어떻게 읽습니까? – quantity

답변

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

가 나는 파일이 큰 것을 할 수 있기 때문에 당신이, 내가 이것을 시도 할 것이다 + 1

0

strSample.GetLength()의 '\ 0'를 포함하는 것을 잊었다 생각 읽혀지는 것보다 (DOS 스타일의 끝선). 읽기는 최종 \ 0을 설정하지 않지만, -1로 호출하지 않으면 ReleaseBuffer가 분명히 수행합니다.

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