搜索学生的时候会报错string subscript out of range
这是为什么啊?应该怎么改啊?
void management::findtxt()
{
vector<student>s;
string m, n;
int p(0), q(0);
int i, j, k, x, a, b, c;
cout << "请输入您要查找的学号或姓名:" << endl;
cin >> m;
for (i = 0; i < stu.size(); i++)
{
for (j = 0; j < m.size(); j++)
{
if (m[j] != stu[i].getId()[i])
break;
}
if (j == m.size())
{
s.push_back(stu[i]);
p++;
cout << stu[i].getId() << '\t' << stu[i].getName() << '\t' << stu[i].getMath() << '\t' << stu[i].getEng() << '\t' << stu[i].getPhy() << endl;
}
for (k = 0; k < m.size(); k++)
{
if (m[k] != stu[i].getName()[k])
break;
}
if (k == m.size())
{
s.push_back(stu[i]);
p++;
cout << stu[i].getId() << '\t' << stu[i].getName() << '\t' << stu[i].getMath() << '\t' << stu[i].getEng() << '\t' << stu[i].getPhy() << endl;
}
}
if (p == 0)
{
cout << "对不起,没有您所查找的信息" << endl;
cout << "是否进行二次搜索?(进行二次搜索回复1,不进行回复0" << endl;
cin >> x;
if (x == 1)
{
cout << "请输入您二次查找学生的学号或姓名:" << endl;
cin >> n;
for (a = 0; a < 1024; a++)
{
for (b = 0; b < n.size(); b++)
{
if (n[b] != s[a].getId()[b])
break;
}
}
if (b == n.size())
{
q++;
cout << stu[i].getId() << '\t' << stu[i].getName() << '\t' << stu[i].getMath() << '\t' << stu[i].getEng() << '\t' << stu[i].getPhy() << endl;
}
for (c = 0; c < n.size(); c++)
{
if (n[c] != s[a].getName()[c])
break;
}
if (c == n.size())
{
q++;
cout << stu[i].getId() << '\t' << stu[i].getName() << '\t' << stu[i].getMath() << '\t' << stu[i].getEng() << '\t' << stu[i].getPhy() << endl;
}
}
if (q == 0)
cout << "对不起,没有您所查找的信息" << endl;
}
}