Я работаю над проектом, который включает в себя создание ряда классов (ростер, студент, дипломированный тип и т. Д.), Связанных с университетским реестром. У меня есть список данных учеников, которые мне нужно проанализировать, смесь строк и целых чисел. Я использую стои для преобразования моих целых чисел, но продолжаю получать сообщение об ошибке «Завершается с необработанным исключением типа std :: invalid_argument: stoi: нет преобразования». Есть ли что-то действительно очевидное, что я здесь упускаю?
Я попытался переставить и переключился с нескольких других методов на stringstream, но я все еще получаю ту же ошибку.
const string studentData[] =
{"A1, John, Smith, John1989@gm ail.com, 20, 30, 35, 30,
SECURITY",
"A2, Suzan, Erickson, Erikson_1990@gmailcom, 19, 50, 30, 40,
NETWORK",
"A3, Jack, Napoli, The_lawyer99yahoo.com, 19, 20, 40, 33,
SECURITY"
"A4, Erin, Black, Erin.black@comcast.net, 22, 50, 58, 40,
SECURITY",
"A5, Martin, Mart, martin.mart@comcast.net, 22, 30, 32, 35,
SOFTWARE"};
//add each student to the classRoster
for (int i = 0; i < 5; i++) {
//create stringstream to parse data
stringstream inSS(studentData[i]);
//create an empty vector
vector<string> studentInfo;
//check that stringstream is good and append values from
studentData to the studentInfo
while (inSS.good()) {
string segment;
getline(inSS, segment, ',');
studentInfo.push_back(segment);
}
Degree degree;
string studentDegreeProgram = studentInfo.at(8);
if (studentDegreeProgram == "SECURITY") {
degree = SECURITY;
}
else if (studentDegreeProgram == "NETWORKING") {
degree = NETWORKING;
}
else {
degree = SOFTWARE;
}
classRoster->Add(studentInfo.at(0), studentInfo.at(1),
studentInfo.at(2), studentInfo.at(3), stoi(studentInfo.at(4)),
stoi(studentInfo.at(5)), stoi(studentInfo.at(6)),
stoi(studentInfo.at(7)), degree);
}