1
我正在製作一個管理酒店的課程。我有一個功能可以保存程序中的所有當前信息。但是,當我嘗試加載回這些信息時,程序崩潰並說:Vector下標超出範圍。我嘗試過調試,並且發現問題應該出現的地方(我想我正確地使用了調試器?),但是沒有得到任何編譯器錯誤,所以我無法弄清楚什麼是錯誤的。有什麼建議麼?嘗試加載文件時出現運行時錯誤:Vector下標超出範圍?
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;
}
檢查'field.size()' – 2012-03-28 23:21:33
很可能你的函數記號化只返回一個只包含字符串的向量,你可以發佈這個函數的代碼,所以我們可以告訴你可能是什麼錯誤 –
EdChum
2012-03-28 23:33:21
@EdChum好的我添加了tokenize函數 – Mike 2012-03-28 23:40:29