2016-09-23 53 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

由於每行有一條記錄,所以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

或者我應該更誠實一些,並且說我爲信譽點回答了它。 :-) –