Я использую С++ уже довольно давно, но, тем не менее, я склонен возвращаться к scanf
, когда мне приходится разбирать простые текстовые файлы. Например, учитывая такую конфигурацию (также предполагая, что порядок полей может меняться):
foo: [3 4 5]
baz: 3.0
Я бы написал что-то вроде:
char line[SOME_SIZE];
while (fgets(line, SOME_SIZE, file)) {
int x, y, z;
if (3 == sscanf(line, "foo: [%d %d %d]", &x, &y, &z)) {
continue;
}
float w;
if (1 == sscanf(line, "baz: %f", &w)) {
continue;
}
}
Какой самый сжатый способ достичь этого в С++? Всякий раз, когда я пытаюсь, я получаю много кода леса.