2016-09-23 10 views
-8

私はこのようなファイルがあります: 計算テキストファイルの数値データ

89369865 19 20 17 14 10 5 16 20 20 12 7 49 82 7 
55959810 36 18 18 19 20 17 20 17 7 15 9 75 81 10 
56569325 20 7 14 12 20 18 18 9 17 12 5 61 98 9 
92457613 35 6 15 19 20 20 13 18 17 8 11 40 57 10 
81596872 25 20 11 14 18 19 16 12 13 10 12 68 86 9 
79916777 39 20 20 8 18 19 11 14 13 18 17 61 97 7 

81383418 38 10 12 18 17 17 16 16 19 19 4 72 92 3 

ちょうど50を持つ学生の合計を。

私は既にコードでファイルを開いています
1.各行を別々に計算するにはどうすればよいですか?
2.各行を別々に計算し、各行に合計を与えるループを作成するにはどうすればよいですか?

ありがとうございました!

+0

コードフォームでファイルをコメントしてください。 – blazerix

+2

"コードグリッチ"にならないでください - これまでに試したことを教えてください –

+0

"stackoverflow C++ファイル構造体を読み取る " –

答えて

1

1行に1レコードがあるので、std::getlineはあなたの友人になります(std::string)。

はのが何かを試してみましょう:

std::string record_text; 
std::getline(my_data_file, record_text); 

我々は数にテキストレコードを変えるのを助けるためにstd::istringstreamを使用することができます。

std::istringstream record_stream(record_text); 
std::vector<int> student_values; 
int student_id; 
record_stream >> student_id; 
int value; 
while (record_stream >> value) 
{ 
    student_values.push_back(value); 
} 

私は学生の値を含むようにstd::vectorを使用しています。別のコンテナを使用する必要があります。

編集1:オーバーロードの抽出演算子
あなたはインストラクターと仲間の学生を感動したい場合は、structのレコードをモデル化し、入力演算子オーバーロードする必要があります。

struct Student_Record 
{ 
    int id; 
    std::vector<int> values; 
    friend std::istream& operator>>(istream& input, Student_Record& sr); 
}; 
std::istream& operator>>(istream& input, Student_Record& sr) 
{ 
    // See above on how to read a line of data. 
    // Be sure to use "sr." when accessing the structure variables, 
    // such as sr.id 
    return input; 
} 

オーバーロードされたオペレータができますがあなたは簡単な入力を持っています:

std::vector<Student_Record> database; 
Student_Record sr; 
while (my_data_file >> sr) 
{ 
    database.push_back(sr); 
} 

教師と仲間にはStackOverflowを必ずお勧めしますへこみ。

+0

@TheOneandOnlyChemistryBlob:今日は太平洋沿岸の金曜日なので、私はいいと思って基礎を築きました。時には、ナッジが助けになることもあります。私はプログラム全体を提供しませんでした。一部の先進技術のみ。 –

+0

@ThomasMatthewsきれいにやったよ+1 – blazerix

+1

私はもっと正直で、評判の点で私がそれに答えたと言うべきでしょうか? :-) –