在 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);
}
但是我的程序崩溃了,并显示非法指令
。我做错了什么?
I'm trying to print out a list of strings thus:
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);
}
But my program crashes saying Illegal Instruction
. What am I doing wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
*i
是String
,而不是char *
。如果log.debug()
是printf
系列的函数,则您需要一个以零结尾的字符串。根据String
类的实现方式,您可能有一个返回const char *
的函数。例如,使用
std::string
时,该函数为c_str
:*i
is aString
, not achar *
. Iflog.debug()
is a function of theprintf
family, you want a zero-terminated string. Depending on how yourString
class is implemented you might have a function that returns aconst char *
.For example with
std::string
that function isc_str
: