我有以下结构定义:
struct Sportsman
{
string name;
double points[7];
double avr_point;
};
我想读取以下文件内容到结构数组:
Petrov 4,9 5,3 5,0 5,0 4,9 5,3 5,5
Ivanov 6,0 5,9 5,9 5,7 5,7 5,8 5,9
这是我尝试的方式:
ifstream fin("sportsman.txt");
string line;
int i = 0;
while (getline(fin, line))
{
sscanf(line.c_str(), "%s %lf %lf %lf %lf %lf %lf %lf", &sm[i].name, &sm[i].points[0], &sm[i].points[1], &sm[i].points[2], &sm[i].points[3],
&sm[i].points[4], &sm[i].points[5], &sm[i].points[6], &sm[i].points[7]);
i++;
}
但是结构字段“名称”没有正确填写。看起来前四个字符被忽略了,而“ Petrov”和“ Ivanov”只得到了部分“ ov”,而点数很好。
那么,我应该如何使用sscanf和%s以正确的方式读取名称?