Member 8813030 Ответов: 1

Разбор имен столбцов из файла


Проблема разбора слов из текстового файла, содержащего канал в качестве разделителя

У меня есть файл, который имеет такие значения, как
============================================================
Id | Name | Age |D | Type |P       |
   |      |     |O |      |H       |
   |      |     |B |      |Number  |
============================================================

Я должен разобрать эти строки и извлечь имена столбцов, которые являются Id,Name,Age,DOB,Type, PHNumber, в вектор.

Я не могу получить имена DOB и PHNumber.
Пожалуйста, подскажите, как мне разобрать эти строки.

Что я уже пробовал:

boost::regex col_check("^[A-Z].*");
while(getline(ifile,record))
    {
	   if(regex_match(record,col_check) )
		{
		    string tmp=record;
		    istringstream line(tmp);
		    while(getline(line,token,'|'))
		    {
		      rows.push_back(token);
		      
		      
		    }
	}
}

Richard MacCutchan

DOB и PHNumber распределены более чем по одной строке, поэтому вам нужно будет прочитать все строки заголовка и сначала объединить различные части.

[no name]

http://www.cplusplus.com/reference/cstring/strtok/

[no name]

Кто создал эту подверженную ошибкам файловую схему? Если вы тогда, возможно, узнаете о csv-файлах: https://en.wikipedia.org/wiki/Comma-separated_values во-первых, и адаптироваться соответственно.

Member 8813030

@pwasser: я еще не создал этот файл.Это файл журнала, который был сгенерирован где-то, и мне нужно разобрать этот файл для дальнейшей обработки. Так что с вашей стороны будет очень любезно помочь мне решить эту проблему, потому что изменить формат файла не в моих руках.

[no name]

Так в чем же проблема? Вы знаете схему, просто прочитайте три строки и извлеките данные по мере необходимости. Довольно прямолинейно. Я надеюсь, что это студенческая работа и ничего больше, потому что формат файла неизбежно приведет к другим проблемам, если он не будет решен.

1 Ответов

Рейтинг:
0

KarstenK

Разбор строк-это общий путь. В зависимости от того, какой строковый класс у вас есть в вашем проекте, вы можете использовать некоторую функцию split или strtok.

Хорошее решение я нашел в этом статья с разделением и статья для функции strtok искупил После нахождения подстроки вам может потребоваться удалить пробелы и преобразовать строку в какой-либо другой тип данных.