В общем, я пытаюсь прочитать строку:
Darth_Vader 100 100 60 40
каждая вещь должна входить в свою переменную. Все работает нормально, за исключением того, что переменная, которая должна содержать значение 40 в конце, не делает этого, но имеет значение -858993460.
Вот соответствующий код:
void Jedi::inputData(istream& inputStream)
{
string nameText, maxHPText, currHPText, atkBonusText, defBonusText;
inputStream >> nameText >> maxHPText >> currHPText >> atkBonusText >> defBonusText;
Jedi::setName(nameText);
Jedi::setMaxHealth(stoi(maxHPText));
Jedi::setCurrHealth(stoi(currHPText));
Jedi::setAttackBonus(stoi(atkBonusText));
Jedi::setDefenseBonus(stoi(defBonusText));
}
Как заставить inputStream игнорировать новую строку, взять 40, а затем перейти к следующей строке при следующем вызове функции?
Я бы попробовал getline (), а затем trim () в выбранной строке.
Теперь со строкой в виде std :: string вы можете использовать строковый токенизатор для извлечения каждого «слова» и преобразовывать те значения, которые должны быть числовыми, в целые числа, используя atoi или библиотечную функцию, например boost::lexical_cast<int>(strValue)
Других решений пока нет …