2012-03-28 52 views
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; 
} 
+0

檢查'field.size()' – 2012-03-28 23:21:33

+0

很可能你的函數記號化只返回一個只包含字符串的向量,你可以發佈這個函數的代碼,所以我們可以告訴你可能是什麼錯誤 – EdChum 2012-03-28 23:33:21

+0

@EdChum好的我添加了tokenize函數 – Mike 2012-03-28 23:40:29

回答

1

它告訴你,field[1]不存在。所以,無論出於何種原因,您tokenize函數返回長的矢量1

相關問題