如何使用sscanf将文件中的字符串解析为结构?

时间:2019-05-08 12:59:00

标签: c++

我有以下结构定义:

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以正确的方式读取名称?

0 个答案:

没有答案