TiXml의 출력을 위한 FILE*로 메모리 버퍼 생성
특정 시나리오에서는 TiXml 출력을 메모리 버퍼에 쓰는 기능 파일 대신 유용할 수 있습니다. 그러나 TiXml에는 이를 처리할 수 있는 직접적인 기능이 없습니다.
해결책: POSIX 함수 사용
이 제한을 극복하기 위해 POSIX는 다음을 생성할 수 있는 두 가지 기능을 제공합니다. 메모리 버퍼를 FILE*:
fmemopen 사용 예:
#include
void writeXmlToMemoryBuffer(TiXmlDocument& doc) {
// Create a memory buffer
char buffer[1024];
// Open the buffer as a FILE* object
FILE* fp = fmemopen(buffer, sizeof(buffer), "w");
// Write the XML document to the memory buffer through the FILE* object
doc.Print(fp);
// Close the FILE* object
fclose(fp);
}
이 예에서 fmemopen 함수는 쓰기를 위한 파일 모드 "w"와 함께 메모리 버퍼 버퍼와 해당 크기를 인수로 사용합니다. 그런 다음 doc.Print 메소드는 fp FILE* 객체를 통해 XML 문서를 메모리 버퍼에 씁니다.
open_memstream 사용 예:
#include
#include
void writeXmlToMemoryBuffer(TiXmlDocument& doc) {
std::ostringstream buffer;
doc.Print(&buffer);
std::cout 이 예에서는 open_memstream 함수가 명시적으로 사용되지 않지만 sstream 라이브러리는 유사한 기능을 제공합니다. 문자열 버퍼 객체(buffer)와 FILE 객체(&buffer)를 동시에 생성합니다. doc.Print 메소드는 FILE 객체를 통해 XML 문서를 메모리 버퍼에 씁니다. 그런 다음 메모리 버퍼의 내용을 문자열로 액세스할 수 있습니다.
이 POSIX 함수를 사용하면 FILE* 개체처럼 작동하는 메모리 버퍼를 효과적으로 생성할 수 있으므로 TiXml이 XML을 메모리에 직접 출력할 수 있습니다. 완충기.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3