我有一个.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