【发布时间】:2012-03-28 23:15:13
【问题描述】:
我正在为管理酒店的班级制作程序。我有一个功能可以保存程序中的所有当前信息。但是当我尝试加载该信息时,程序崩溃并说:向量下标超出范围。我尝试调试,发现问题所在的区域(我认为我正确使用了调试器?),但我没有得到任何编译器错误,所以我不知道出了什么问题。有什么建议吗?
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]));
}
}
这里是tokenize函数
vector<string> tokenize(string com)
{
istringstream is(com);
vector<string> vs;
string s;
while(!is.eof())
{
is>>s;
vs.push_back(s);
}
return vs;
}
【问题讨论】:
-
很可能你的函数 tokenize 只返回一个向量
只包含一个字符串,你能发布这个函数的代码,以便我们告诉你可能是什么错误 -
@EdChum 好的,我添加了标记化功能
-
我想通了,我得调整分词器