2011-10-03 36 views
0

我想這樣打印出的字符串列表:在C++中對字符串列表進行迭代,發生了什麼問題?

std::list<String> const &prms = (*iter)->getParams(); 
std::list<String>::const_iterator i; 
for(i = prms.begin(); i != prms.end(); ++i){ 
    log.debug(" Param: %s",*i); 
} 

但我的程序崩潰說Illegal Instruction。我究竟做錯了什麼?

+2

資本字符串 - 什麼類是,在C++/CLI一個?或者你的意思是std :: string?如果是這樣,你需要'i-> c_str()'作爲我認爲的輸出,假設debug接受char *。 – Rup

+0

來自Java,C++有時會把我搞糊塗...... – fredley

回答

11

*iString而不是char *。如果log.debug()printf系列的函數,則需要以零結尾的字符串。根據您的String類的實現方式,您可能有一個返回const char *的函數。

例如與std::string該函數是c_str

for(std::list<std::string>::const_iterator i = my_list.begin(); i != my_list.end(); ++i) 
{ 
    printf("%s\n", i->c_str()); 
} 
+0

你是對的,問題在於它不是'char *',它實際上是一個專有的'String'類,現在我已經對問題。 – fredley