Итерируя по списку строк в C ++, что не так? - PullRequest
0 голосов
/ 03 октября 2011

Я пытаюсь распечатать список строк следующим образом:

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.Что я делаю не так?

1 Ответ

11 голосов
/ 03 октября 2011

*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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...