簡體   English   中英

C ++:如何從.dat文件中的特定行讀取

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM