【发布时间】:2015-02-02 20:45:17
【问题描述】:
我有一个.txt 文件,其中存储了学生姓名以及他们的两个最好成绩。如果学生由于某种原因(例如辍学)未能通过课程,则不记录任何分数。
我的文件是这样的
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,不,这不是家庭作业。只是自学和学习,如果是家庭作业,我会向我的讲师寻求帮助
-
您可以只使用 getline 读取行和 stringstream 将读取的数据分配给名称和数字。您可以使用带有字符串的 unordered_map 作为映射到值向量(双精度值)的键。希望这会有所帮助。
-
@learningToCode,没有
stringstream和vectors有没有办法做到这一点? -
-1因为寻求代码高尔夫解决方案并不能解决“实际的、真正的问题”。 -
+1因为编码就像写作,你必须阅读很多内容才能写出来。
标签: c++ char double key-value keyvaluepair