次の形式のテキスト ファイルを読み取るために使用している次のコード ブロックがあります。
firstname lastname id mark
firstname lastname id mark
以下はコードのブロックです。
void DBManager::ReadFile(void){
fstream myfile; /*fstream object that will be used for file input and output operations*/
char* fn; /*pointer to the storage which will hold firstname*/
char* ln; /*pointer to the storage which will hold lastname*/
int id; /*integer var to hold the id*/
float mark; /*float var to hold the mark*/
/*read in the filename*/
g_FileName = new char[1024]; /*allocate memory on the heap to store filename*/
cout << "Please enter the filename:";
cin >> g_FileName;
/*open file*/
myfile.open(g_FileName, ios::in | ios::out);
if(myfile.is_open()){ /*check if the file opening is successful*/
cout << "File reading successful !\n";
/*read information from the file into temporary variables before passing them onto the heap*/
while (!myfile.eof()) {
fn=(char*) new char[1024];
ln=(char*) new char[1024];
myfile >> fn >> ln >> id >> mark;
cout << fn << " " << ln << " " << id << " " << mark << " " << endl;
}
myfile.close();
}
else{ /*else print error and return*/
perror("");
return;
}
}
上記のコードブロックは機能します! :)しかし、myfileが一度に1行を保持することになっていることをどのように認識しているか、および4つの変数の設定について十分にスマートであることに驚いています。
私は C++ が初めてなので、これは何らかのドキュメントでカバーされている可能性があります。しかし、あなたからの洞察や、fstreamオブジェクトをよりよく理解できる場所へのリンクをいただければ幸いです。