#c #string #iterator
#c #строка #итератор
Вопрос:
Я пытаюсь распечатать список строк таким образом:
std::list<String> const amp;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. Заглавная строка — что это за класс, тот, что на C / CLI? Или вы имеете в виду std::string ? Если это так,
i->c_str()
я думаю, вы хотите получить результат, предполагая, что debug принимает char * .2. Исходя из Java, C иногда меня чертовски смущает…
Ответ №1:
*i
это a String
, а не a char *
. Если log.debug()
это функция printf
семейства, вам нужна строка с нулевым завершением. В зависимости от того, как реализован ваш String
класс, у вас может быть функция, которая возвращает a const char *
.
Например, с std::string
помощью этой функции c_str
:
for(std::list<std::string>::const_iterator i = my_list.begin(); i != my_list.end(); i)
{
printf("%sn", i->c_str());
}
Комментарии:
1. Вы правы в том, что проблема в том, что это не a
char *
, на самом деле это проприетарныйString
класс, и теперь я разобрался с проблемой.