2010-07-29 6 views
1

데이터가 CString에 저장되어 있으며 XML 파서 라이브러리에서 파싱해야합니다. 문제는 XML 구문 분석기가 CFile 인 경우입니다. CString을 텍스트 파일로 작성한 다음 CFile에 다시로드하는 것은 이상적이지 않습니다. 중간 출력 파일을 만들지 않고 CStringCFile으로 직접 전송할 수있는 방법이 있습니까?실제 파일을 쓰지 않고 CString을 CFile로 보내는 방법이 있습니까?

답변

4

이 작업을 수행하려면 CMemFile을 사용할 수 있어야합니다. CFile에서 상속되며 데이터에 임의의 버퍼를 지정할 수 있습니다. 다음 샘플 코드는 작동해야합니다.

CString strData; 
CMemFile memFile((BYTE*)strData.GetBuffer() , (strData.GetLength() + 1) * sizeof(TCHAR)); 

//Do something with memFile 

strData.ReleaseBuffer(); 
+0

샘플 코드를 시도했지만 XML 파서가 빈 스트림으로 인해 구문 분석을 수행하지 못했습니다. XML 구문 분석기를 자세히 살펴보면 'CFile'을 가져 와서 'CArchive'에 넣는 것으로 보입니다. 나는 이것을 시도 :'CArchive archive (& memFile, CArchive :: load);'그것을 아카이브로 만들고 함수가'CArchive'를 가져 오는 오버로드 된 생성자를 가지고 있기 때문에 매개 변수로 아카이브를 보냈습니다. 이 점이 다른 점이 있습니까? – alex

+0

'CMemFile' 오브젝트를'CArchive' 오브젝트 안에 넣어서 아카이브에서 데이터를 읽으려고했는데 정상적으로 작동했습니다. 샘플 코드의'strData' 객체는 빈 문자열입니다. 실제 XML 데이터가 들어있는 문자열로 바꾸시겠습니까? – flashk

+0

예. 나는'CString strData = blah.c_str();'을 가지고 있는데, 'blah'는 XML 코드를 포함하는''문자열 데이터 유형이다. – alex

관련 문제