我正在开发一个小程序,该程序采用输入文件并处理文件中的数据。使用我当前的代码(见下文),当您输入有效的文件名时,它只会冻结命令行(下拉一行并仅显示闪烁的 _ ),我必须终止程序才能退出。如果您输入无效的文件名,则 if(!file) 会被调用并正常运行。真正奇怪的是,如果我在 if 语句上方放置一个调试 cout,如果文件名正确,它将不会被调用。希望您能提供帮助,如果您需要更多信息,请告诉我!
这是我当前的代码:
using namespace std;
#include <iostream>
#include <stdexcept>
#include <string>
#include <fstream>
#include <vector>
#include <cctype>
#include "Student.h"
int main(){
string filename, name;
char *inputfile;
ifstream file;
vector<Student> students;
const int SIZE = 200;
char buffer [SIZE];
int regno, i;
cout << "Enter file name: ";
cin >> filename;
inputfile = const_cast<char*> (filename.c_str());
file.open(inputfile);
if (!file){
cout << "Failed to open " << filename << endl;
exit(1);
}
while (!file.eof()){
file.getline(buffer, SIZE);
i = 0;
regno = 0;
while (isdigit(buffer[i])){
regno = (regno*10)+buffer[i];
}
cout << regno;
}
file.close();
}