Получение ошибки времени выполнения при попытке загрузить файл: индекс вектора вне допустимого диапазона?

Я делаю программу для класса, которая управляет отелем. У меня есть функция, которая сохраняет всю текущую информацию в программе. Но когда я пытаюсь загрузить обратно эту информацию, программа вылетает и говорит: Индекс вектора вне допустимого диапазона. Я попытался отладить и нашел область, в которой должна быть проблема (думаю, я правильно использовал отладчик?), но я не получаю никаких ошибок компилятора, поэтому я не могу понять, что не так. Какие-либо предложения?

void Customer::fromFileString(string data)
{
vector<string> field=tokenize(data);
name=field[0];
phoneNumber=field[1]; //<--- DEBUGGER SAYS ERROR IS IN THIS LINE
ccNumber=field[2];
customerID=stringToInt(field[3]);
int numberOfrooms = stringToInt(field[4]);
for(int i=0;i<numberOfrooms;i++)
{
    roomsCheckedInto.push_back(stringToInt(field[5+i]));
}
}

Вот функция токенизации

vector<string> tokenize(string com)
{
istringstream is(com);
vector<string> vs;
string s;
while(!is.eof())
{
    is>>s;
    vs.push_back(s);
}
return vs;
}

person Mike    schedule 28.03.2012    source источник
comment
Вполне вероятно, что ваша функция tokenize возвращает только вектор‹string›, содержащий только одну строку, не могли бы вы опубликовать код для этой функции, чтобы мы могли сказать вам, что может быть ошибкой   -  person EdChum    schedule 29.03.2012
comment
@EdChum хорошо, я добавил функцию токенизации   -  person Mike    schedule 29.03.2012
comment
Я разобрался, пришлось настроить токенизатор   -  person Mike    schedule 29.03.2012


Ответы (1)


Он говорит вам, что field[1] не существует. Итак, по какой-то причине ваша функция tokenize возвращает вектор длины 1.

person Oliver Charlesworth    schedule 28.03.2012