由於每行有一條記錄,所以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給你的老師和同學們凹痕。
請問您是否更具體,也可以代碼形式評論您的文件請 – blazerix
不要成爲「代碼研討會」 - 告訴我們您到目前爲止嘗試過的方法 –
我建議您使用結構並搜索「stackoverflow C++讀取文件結構「 –