Я делаю простую командную строку Hangman.C++ STL: проблема с итераторами строк
void Hangman::printStatus()
{
cout << "Lives remaining: " << livesRemaining << endl;
cout << getFormattedAnswer() << endl;
}
string Hangman::getFormattedAnswer()
{
return getFormattedAnswerFrom(correctAnswer.begin(), correctAnswer.end());
}
string Hangman::getFormattedAnswerFrom(string::const_iterator begin, string::const_iterator end)
{
return begin == end? "" : displayChar(*begin) + getFormattedAnswerFrom(++begin, end);
}
char Hangman::displayChar(const char c)
{
return c;
}
(В конце концов, я изменю это так displayChar()
отображает -
или символов, если пользователь угадал, но для простоты теперь я просто возвращаюсь все.)
Когда я строй и запустите это из VS 2010, я получаю всплывающее окно:
Ошибка отладки!
xstring Line: 78
Выражение: строка итератор не разыменовываемое
Что я делаю неправильно?
Не могли бы вы попытаться получить трассировку во время отладки, чтобы убедиться, что код вы вывесили причины такого поведения? – jpalecek
Есть ли конкретная причина, по которой вы используете рекурсивную реализацию? Итеративная реализация будет проще. –
@ Джеймс, да, ты прав. Я реализовал его итеративно, и теперь он работает. –