为什么我的Loop无法正常工作?

时间:2017-09-13 09:39:14

标签: c++

我在下面有这个代码,允许用户修改文件。我遇到的问题是,一旦它运行,我会经历它。但是,我想再次打开txt文件,它不会打开。

string line, line2;
string data, moduleID, input;
int Choice;
ifstream samsFile("SAMS.txt");
fstream registeredModule("210CTStudentModule.txt");

if(! samsFile){
    cout << "Error Opening File" << endl;
    return 0;
}
do{
    cout<<"HELLO AND WELCOME!!!"<<endl;
    cout<<"what do you want to do?"<<endl;
    cout<<"1: Check Registered Students"<<endl;
    cout<<"2: Register Student To Module"<<endl;
    cout<<"3: Open Registered Module File"<<endl;
    cout<<"4: Logout"<< endl;
    cin>>Choice;
    if(Choice==1){
            while(getline(samsFile,line)){
                cout<<line<<endl;
            }
    }else if(Choice==2){
            vector<string>example;
            while(getline(samsFile,data)){
                example.push_back(data);
            }
            cout<<"What Module Do You Want To Add?: "<<endl;
            cin.ignore();
            cin>>moduleID;
            vector<string>moduleCode;
            for(unsigned int j=0;j<example.size();j++){
                moduleCode.push_back(moduleID);
            }
            for(unsigned int k=0;k<moduleCode.size();k++){
                registeredModule<<moduleCode[k]<<" "<<example[k]<<"\n";
            }
    }else if(Choice==3){
        while(getline(registeredModule,line2)){
            cout<<line2<<endl;
        }
    }
}while(Choice!=4);
cout << "Goodbye" << endl;
return 0;

任何人都知道为什么会这样?

2 个答案:

答案 0 :(得分:2)

我编辑了一段代码。在 中循环 中声明“samsFile”(正如Basya Perlman所说)。

do{
ifstream samsFile("SAMS.txt");
cout<<"HELLO AND WELCOME!!!"<<endl;
cout<<"what do you want to do?"<<endl;
cout<<"1: Check Registered Students"<<endl;
cout<<"2: Register Student To Module"<<endl;
cout<<"3: Open Registered Module File"<<endl;
cout<<"4: Logout"<< endl;
cin>>Choice;
if(Choice == 1){
        while(getline(samsFile,line)){
            cout<<line<<endl;
        }
    }
}while(Choice!=4);
cout << "Goodbye" << endl;

它对我有用!!!

答案 1 :(得分:1)

如果要在每次循环时打开文件,请将流的初始化放在循环中。离开示波器时文件将被关闭,输入时将打开文件。

如果你不介意让它一直打开,问题是你第二次通过循环就在文件的末尾,你可以每次循环使用seekg来重新定位你自己文件的开头。