我有一個.txt
文件,它存儲了學生的姓名以及他們兩個最好的分數。如果學生出於某種原因,即輟學,未能通過課程,則不記錄任何標記。Key Value Pair C
我的文件看起來像這樣
Samuel= 90.5, 95.9
Bill= 25.2, 45.3
Tim
Anthony= 99.9, 12.5
Mark
Rob
基本上Tim
,Mark
和Rob
失敗的過程,因此其商標不被保存。同樣爲了區分失敗的標記和通過標記,我使用了=
符號。基本上,我想把所有的名字和相關的值一起存儲到內存中。
這是我的實現,但它有缺陷,因爲我已經聲明double *marks[2]
數組存儲所有六個標記,當它清楚地只存儲3.我無法將值存儲到double
數組中。
這是我的代碼...
istream& operator>> (istream& is, Students& student)
{
student.names = new char*[6];
for (int i=0; i<10; i++)
{
student.names[i] = new char[256];
student.marks[i] = new double[2];
is.getline(student.names[i], sizeof(student.names));
for (int j=0; j < 256; j++)
{
if((student.names[i][j] == '='))
{
int newPos = j + 1;
for (int k = newPos; k < 256; k++)
{
student.names[i][k - newPos] = student.names[k];
}
}
}
}
}
我該如何去與有效標記存儲了學生的價值?請,沒有用的vectors
或stringstreams
,只是純粹的C/C++ char arrays
@Silicomancer,不,它不是功課。只是自學和學習,如果是作業,我會請我的講師幫忙 – 2014-12-04 20:15:08
你可以使用getline來讀取行和stringstream,以便將讀取的數據分配到名稱和數字中。您可以使用unordered_map作爲映射到值向量(雙精度)的字符串作爲鍵。希望這可以幫助。 – learningToCode 2014-12-04 20:17:34
@learningToCode,有沒有'stringstream'和'vectors'這樣做的方法? – 2014-12-04 20:19:00