c++ - 遍历 C++ 中的字符串列表,出了什么问题?

标签 c++ string iterator

我正在尝试打印出一个字符串列表:

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。我做错了什么?

最佳答案

*i 是一个 String,而不是一个 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());
}

关于c++ - 遍历 C++ 中的字符串列表,出了什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7634093/

相关文章:

javascript - 在 Javascript 中从 DynamoDB 拆分 JSON 格式字符串的最佳方法是什么

java - 在循环内循环中使用 ListIterator 从 ArrayList 中删除元素

c++ - 如何仅使用Iterator显示Vector的前10个元素?

c++ - 在QT应用程序中制作一个透明孔

c++ - GStreamer 运行时错误

c - 为什么我没有得到任何输出

java - 如何从字符串数组中删除索引?

arrays - 我可以操纵当前正在迭代的集合的当前迭代吗?

c++ - unordered_map 仅查找先前找到的项目之后的项目

c++ - glPolygonMode(GL_FRONT_AND_BACK, GL_LINES) 不工作