Я пытаюсь разобрать таблицу в виде текстового файла, используя ifstream, и оценивая/манипулируя каждой записью. Однако у меня возникли проблемы с выяснением того, как подойти к этому из-за упущения определенных элементов. Рассмотрим следующую таблицу:
NEW VER ID NAME
1 2a 4 "ITEM ONE" (2001)
1 7 "2 ITEM" (2002) {OCT}
1.1 10 "SOME ITEM 3" (2003)
1 12 "DIFFERENT ITEM 4" (2004)
1 a4 16 "ITEM5" (2005) {DEC}
Как видите, иногда в столбце «НОВОЕ» ничего нет. Что я хочу сделать, так это принять к сведению идентификатор, имя, год (в скобках) и отметить, есть ли фигурные скобки или нет после этого.
Когда я начал это делать, я искал функцию «разделения», но понял, что это будет немного сложнее из-за вышеупомянутых отсутствующих элементов и разделения заголовков.
Единственное, о чем я могу думать, это читать каждую строку слово за словом, отслеживая последнее число, которое я видел. Как только я нажму на кавычку, обратите внимание, что последнее число, которое я видел, было идентификатором (если я использовал что-то вроде разделения, позицию массива прямо перед кавычкой), а затем записывайте все до следующей цитаты (название) , затем, наконец, начните искать скобки и фигурные скобки для другой информации. Однако это кажется действительно примитивным, и я ищу лучший способ сделать это.
Я делаю это, чтобы отточить свои навыки C++ и работать с большими существующими наборами данных, поэтому я хотел бы использовать C++, если это возможно, но если другой язык (я смотрю на Perl или Python) делает это тривиально простым, я мог бы просто научитесь взаимодействовать с другим языком с C++. Что я сейчас пытаюсь сделать, так это просто просеивать данные, которые в конечном итоге станут объектами в C++, поэтому у меня все еще есть шанс улучшить свои навыки C++.
РЕДАКТИРОВАТЬ: я также понимаю, что это можно выполнить, используя только регулярное выражение, но я хотел бы попробовать использовать другие методы манипулирования файлами/строками, если это возможно.