[英]C++: How to read from specific line in .dat file
我是C ++的新手,我正在嘗試通過閱讀.dat文件(其中每一行都是這種形式)來構造一個指針數組來鍵入Student類型:
101 Jones 92.7 54.3 88 .4*88+.3*(92.7+54.3)
每行將是struct的一個實例,並存儲到指向Student的指針數組中。 這是我的代碼:
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
#include <cstdlib>
using namespace std;
const int N = 100;
struct Students{
int classid;
string lastname;
float exam1;
float exam2;
float final;
float score;
};
int main(void){
Students* s[N];
ifstream input;
ofstream output;
input.open("examscores.dat");
for(int i=0; i< 10; i++){
s[i] = new Students;
input >> s[i]->classid >> s[i]->lastname >> s[i]->exam1 >> s[i]->exam2 >> s[i]->final >> s[i]->score;
}
cout << s[0]->classid << endl;
cout << s[4]->classid << endl;
cout << s[5]->classid << endl;
return 0;
}
我期望這個輸出:
101
105
106
但我得到:
101
0
0
.4*88+.3*(92.7+54.3)
不適合放入float
。 您必須將其作為字符串讀取,才能自己解析表達式。
當使用input >> ... >> s[i]->score
它將讀取.4
但其余的( *88+.3*(92.7+54.3)
)留在緩沖區中,並破壞后續的讀取。
快速修復:替換float score;
通過std::string score;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.