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

Работя върху проблем за клас, който приемам, в който трябва да прочетем текст от файл в 2d таблица с низове (наречена „таблица с низове [][]“). Текстовият файл, в който чета, е форматиран по следния начин:

Ain el Beida # - # - # OEB # Алжир # Африка # F # 42578 # 61997 # 90560 # #

Segbana # - # - # ALI # Бенин # Африка # F # -1 # 10219 # -1 # #

Skelmersdale # - # - # LAN # Англия # Европа # F # 42611 # 42104 # 39279 # #

#

Както можете да видите, всяко поле е разделено с '#', краят на ред е отбелязан с 2 #, а краят на файла с 3 #. Разглеждах няколко различни начина за изолиране на всяко поле, така че да мога да го запазя в масива, но досега не съм намерил нищо, което да работи добре за моята цел.

Блъскам си главата в това от няколко часа и наистина ще бъда благодарен за всеки съвет как да го накарам да работи.


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