xerces-C++的XmlCh是双字节的,但是unix平台的wchar_t是4字节的

daishu59
daishu59 2010-11-25 字数 425

我在solaris平台上使用xerces-C++,发现,xerces自定义的XmlCh是双字节short,而平台上的wchar_t是4个字节的,不能直接用。如果用char的话

XMLPlatformUtils::Initialize();

XMLCh nameStr[100]="abc";

aNode   =doc->createElement(nameStr);

编译提示错误:

> sunCC -I/u1/gonl02/bin/xerces-c-3.1.1-sparc-solaris-cc-5.10/include -lutil xml.C

"xml.C", line 12: Error: Cannot use const char[4] to initialize unsigned short[100]

我改如何转换呢?

XML 可扩展置标语言
1 个回复
thinkhy
<Test/> 2011-01-01

int byte2_to_byte4(char* src, char* des)

{

if(NULL == src || NULL == des)

return -1;

int flag = 0;

int n = 0;

while(2 != flag)

{

*des = *src;

if(0 == *des)

flag ++;

else if(0 != flag)

flag = 0;

des++;

src++;

n++;

//注意大端小端机的区别

if(0 == n%2)

{

*des++ = 0;

*des++ = 0;

}

}

return 0;

}

平台上的wchar_t是4个字节的,不能直接用。如果用char的话

【 在 daishu59 (daishu59) 的大作中提到: 】

: 我在solaris平台上使用xerces-C++,发现,xerces自定义的XmlCh是双字节short,而

:     XMLPlatformUtils::Initialize();

:     XMLCh nameStr[100]="abc";

: ...................