字符串下标超出范围 [英] String subscript out of Range

查看:521
本文介绍了字符串下标超出范围的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿,



我想知道如何摆脱字符串下标超出范围的错误?

或者如何初始化字符串以消除此错误?



  bool  Find_Student (管理员和学生)
{
string sline,stemp;
int counter = 1 ;
bool isFound = false ;
int iStudent_num = 0 ;
stemp = student.return_roll(); // 从类中获取卷号,工作正常
int sSize = stemp.length();
ifstream myfile( student.txt);
while (!myfile.eof())
{
counter = 1 < /跨度>;
getline(myfile,sline);
iStudent_num ++;
while (stemp [counter] == sline [counter]) // 在调试时给出错误
{
counter ++;
if (counter == 7
{
isFound = true ;
break ;
}
}
/// ///留下剩下的东西/ ////
if (isFound == true
{
student = fetch_data(sline);
break ;
}
}

myfile.close();
return isFound;
}





/////////student.txt///////

 l114443 $ Talha Jamil $ samsung $ 12 $ 17 $ 2004 $ UnderGraduate $! 
l114445 $ Kamran Javed $ jannat123 $ 12 $ 12 $ 2009 $ UnderGraduate $!
l114093 $ Imran Khan $ pluto123 $ 11 $ 4 $ 2009 $ UnderGraduate $!
l114444 $ Jamil Ahmed $ origin123 $ 11 $ 12 $ 2009 $ UnderGraduate $!
l114606 $ Zain Malik $ samsung $ 9 $ 16 $ 2009 $毕业生$!
l114441 $ Saad Kamran $ samsung $ 11 $ 4 $ 2004 $毕业生$!







假设输入在Roll_num中给出的是l114441

解决方案

Talha Jamil


samsung


12

Hey,

I want to know how can i rid of "string subscript out of range" error?
Or how to initialize the string to get rid of this error?

bool Find_Student(Administrator &student)
{
    string sline,stemp;
    int counter=1;
    bool isFound=false;
    int iStudent_num=0;
    stemp=student.return_roll();   //gets roll number from class, works fine
    int sSize=stemp.length();
    ifstream myfile("student.txt");
    while(!myfile.eof())
    {
        counter=1;
        getline(myfile,sline);
        iStudent_num++;
        while(stemp[counter]==sline[counter])    //give error here while debugging
        {
            counter++;
            if(counter==7)
            {
                isFound=true;
                break;
            }
        }
   //////Leave the rest of stuff/////
        if(isFound==true)
        {
                student=fetch_data(sline);
                break;
        }
    }

    myfile.close();
    return isFound;
}



/////////student.txt///////

l114443$Talha Jamil$samsung$12$17$2004$UnderGraduate$!
l114445$Kamran Javed$jannat123$12$12$2009$UnderGraduate$!
l114093$Imran Khan$pluto123$11$4$2009$UnderGraduate$!
l114444$Jamil Ahmed$origin123$11$12$2009$UnderGraduate$!
l114606$Zain Malik$samsung$9$16$2009$Graduate$!
l114441$Saad Kamran$samsung$11$4$2004$Graduate$!




Suppose Input given in Roll_num is l114441

解决方案

Talha Jamil


samsung


12


这篇关于字符串下标超出范围的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆