2013-01-11 33 views
0

我在VC工作++,并试图加载XML文件以及整个数据加载到一个字符串,但我没有得到结果加载XML值,并将其传递到字符串在VC++

char text[700] = {""}; 

TiXmlDocument doc("'demotest.xml"); 
bool loadOkay = doc.LoadFile(); 
if (!loadOkay) 
{ 
    printf("Could not load test file 'demotest.xml'. Error='%s'. Exiting.\n", doc.ErrorDesc()); 
    system("PAUSE"); 
    exit(1); 
} 

    printf("** Demo doc read from disk: ** \n\n"); 
    printf("** Printing via doc.Print **\n"); 
    //doc.Print(stdout); 

    { 
     printf("** Printing via TiXmlPrinter **\n"); 
     TiXmlPrinter printer; 
     doc.Accept(&printer); 
     fprintf(stdout, "%s", printer.CStr()); 

//upto this line its working fine in console. but when I convert this string am getting struck 

     wsprintf(text, "%s", (char*)printer.CStr()); 
     AddLOG_message(text, 0, true); 



    } 

最后两行我应该获取xml的全部内容,包括标题,元素和值。 请帮忙。

回答

0

我不喜欢这样,与C语言代码更少,更多的C++代码和自嘲的长度神奇数字700的危险字符数组:

TiXmlPrinter printer; 
doc.Accept(&printer); 
doc.Print(); // simpler for stdout output 
std::string text = printer.CStr(); // easier, safer this way 
AddLOG_message(text.c_str(), 0, true); 
+0

非常感谢你。我的addlog_message函数是------- >>>>> void AddLOG_message(char * message,int len,int add_time)if char print - >> char texts [700] = {““}我的回报只有136。我需要字符串中的完整xml结构。 – user1441251

+0

@ user1441251你可以使参数为'const char * message'吗?否则我的答案将不起作用,你仍然需要'char text [700]',但是更容易'strncpy(text,printer.CStr(),699);' – acraig5075

+0

我用这个char映射了很多*。如果我更改为const char *,那么会出现错误“const char与TCHAR类型的参数不兼容”void AddLOG_message(const char * message,int len,int add_time) 请在此帮助我 – user1441251

相关问题