VS下利用tinyxml解析xml无法进行const char转换,该怎么解决
VS下利用tinyxml解析xml无法进行const char转换
tinyxml的帮助文档里有一个例子:
在VS2008里调试这个例子时报错:
error C2664: “dump_to_stdout”: 不能将参数 1 从“TiXmlDocument *”转换为“const char *”
应如何解决此问题,实现函数的递归调用?
——谢谢!
------解决方案--------------------
你没把帮助文档看全吧?
人家明明写着 dump_to_stdout( &doc );这个函数在后面进行声明。
以下摘自http://www.grinninglizard.com/tinyxmldocs/tutorial0.html
tinyxml的帮助文档里有一个例子:
- C/C++ code
void dump_to_stdout(const char* pFilename) { TiXmlDocument doc(pFilename); bool loadOkay = doc.LoadFile(); if (loadOkay) { printf("\n%s:\n", pFilename); dump_to_stdout( &doc ); // 此行报错 } else { printf("Failed to load file \"%s\"\n", pFilename); } }
在VS2008里调试这个例子时报错:
error C2664: “dump_to_stdout”: 不能将参数 1 从“TiXmlDocument *”转换为“const char *”
应如何解决此问题,实现函数的递归调用?
——谢谢!
------解决方案--------------------
你没把帮助文档看全吧?
人家明明写着 dump_to_stdout( &doc );这个函数在后面进行声明。
以下摘自http://www.grinninglizard.com/tinyxmldocs/tutorial0.html
- C/C++ code
void dump_to_stdout( TiXmlNode* pParent, unsigned int indent = 0 ) { if ( !pParent ) return; TiXmlNode* pChild; TiXmlText* pText; int t = pParent->Type(); printf( "%s", getIndent(indent)); int num; switch ( t ) { case TiXmlNode::DOCUMENT: printf( "Document" ); break; case TiXmlNode::ELEMENT: printf( "Element [%s]", pParent->Value() ); num=dump_attribs_to_stdout(pParent->ToElement(), indent+1); switch(num) { case 0: printf( " (No attributes)"); break; case 1: printf( "%s1 attribute", getIndentAlt(indent)); break; default: printf( "%s%d attributes", getIndentAlt(indent), num); break; } break; case TiXmlNode::COMMENT: printf( "Comment: [%s]", pParent->Value()); break; case TiXmlNode::UNKNOWN: printf( "Unknown" ); break; case TiXmlNode::TEXT: pText = pParent->ToText(); printf( "Text: [%s]", pText->Value() ); break; case TiXmlNode::DECLARATION: printf( "Declaration" ); break; default: break; } printf( "\n" ); for ( pChild = pParent->FirstChild(); pChild != 0; pChild = pChild->NextSibling()) { dump_to_stdout( pChild, indent+1 ); } }