我在下面有这个代码,允许用户修改文件。我遇到的问题是,一旦它运行,我会经历它。但是,我想再次打开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;
任何人都知道为什么会这样?
答案 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来重新定位你自己文件的开头。