入力ファイルを受け取り、ファイル内のデータを処理する小さなプログラムに取り組んでいます。現在のコード (以下を参照) では、有効なファイル名を入力すると、コマンド ラインがフリーズし (行がドロップダウンして _ が点滅するだけ)、プログラムを強制終了して抜け出す必要があります。無効なファイル名を入力すると、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();
}