Чтение текстовых полей из файла с настраиваемым разделителем

Я работаю над проблемой для класса, который я беру, в котором нам нужно читать текст из файла в 2-мерную таблицу строк (называемую «таблица строк [][]»). Текстовый файл, который я читаю, отформатирован следующим образом:

Айн-эль-Бейда # - # - # OEB # Алжир # Африка # F # 42578 # 61997 # 90560 # #

Сегбана #-#-#АЛИ#Бенин#Африка#F#-1#10219#-1##

Скелмерсдейл#-#-#LAN#Англия#Европа#F#42611#42104#39279##

#

Как видите, каждое поле разделяется символом «#», конец строки обозначается двумя символами #, а конец файла — тремя символами #. Я рассматривал несколько различных способов изоляции каждого поля, чтобы сохранить его в массиве, но пока не нашел ничего, что хорошо подходило бы для моей цели.

Я уже несколько часов бьюсь об это головой, и я был бы очень признателен за любые советы о том, как заставить это работать.


person Paul Woidke    schedule 25.09.2011    source источник


Ответы (1)


Рассмотрите возможность использования std::getline, поскольку он позволяет указать разделитель (в вашем случае разделитель #).

std::ifstream file("somefile.txt");
std::string field1;
std::getline(file, field1, '#'); // Ain el Beida

Обратите внимание, что каждое поле на самом деле разделено пробелом и #, поэтому в некоторых случаях у вас будут начальные/конечные пробелы.

Поскольку это для класса, я позволю вам разобраться с остальным!

person Marlon    schedule 25.09.2011