c++ - 如何使用 sscanf 将字符串从文件解析为结构?
问题描述
我有以下结构定义:
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 以正确的方式读取名称?
解决方案
推荐阅读
- typescript - 将 joi-date 扩展到 Typescript 中的 Joi 模块
- android - AutoCompleteTextView (setText) 和 fragment.detach().attach()
- swiftui - 删除项目时列表的奇怪行为
- javascript - 如何在表格中呈现换行符↵ - Vuejs?
- r - 在 R 中使用 purr::map 启动功能
- ios - 如何在 SwiftUI 的操作表中设置自定义字体?
- javascript - 如何在javascript中将html标签作为变量传递?
- python - 如何制作更高效的代码?(熊猫数据框)
- java - 何时调用 Java 超级构造函数?
- kotlin - 如何在kotlin中将lambdas与函数式接口一起使用并直接将lambda分配给var