Как бы вы прочитали простой формат файла, используя C или C ++?
Например, взять формат файла Wavefront .obj, пример:
# this is a box
o 1
v -0.5 -0.5 0.5
v -0.5 -0.5 -0.5
v -0.5 0.5 -0.5
v -0.5 0.5 0.5
v 0.5 -0.5 0.5
v 0.5 -0.5 -0.5
v 0.5 0.5 -0.5
v 0.5 0.5 0.5
usemtl Default
f 4 3 2 1
f 2 6 5 1
f 3 7 6 2
f 8 7 3 4
f 5 8 4 1
f 6 7 8 5
Поскольку файлы могут быть довольно большими, я создал промежуточный класс (FileBuffer) с оператором []. Он содержит 4096 байт файла в памяти и считывает новые части при необходимости.
Формат файла действительно прост, но я не предпочитаю использовать что-то вроде flex / bison для этого. Это только усложнит дело.
Как правильно интерпретировать этот (вид) файл? В настоящее время у меня есть множество вложенных циклов for / while и отслеживание множества счетчиков. Также много операторов switch / elseif. Как бы я сделал этот код более понятным и понятным?
Спасибо.