свойства — Как читать из файла, который имеет строки, которые должны быть проигнорированы

Я искал где-нибудь, где мог бы найти такую ​​вещь, верить этому или нет, около 3 месяцев …

И еще мне пришло в голову, что это, наверное, что-то невероятно легкое … Но после многих экспериментов я не добился успеха.

Можно было бы найти это где-то еще, но я также не уверен, как его искать, поэтому я спрашиваю здесь.

Вот что я хочу сделать:
У меня есть такой файл

[Имущество]

1 Din 17 M 10 D FFF

2 Dout 12 F 11 F FFF

[Имена]

1 дин

2 Даут

Файл заканчивается здесь.

Я хочу прочитать весь файл в переменные, что я уже делаю, например:

std::ifstream readP("properties.dat");

unsigned short ID;
std::string Name;
unsigned short p2;
char p3;
unsigned short p4;
char gTemp;
std::string fProperty;

while(readP >> ID >> Name >> p2 >> p3 >> p4 >> gTemp >> fProperty);

Теперь я хочу прочитать все, кроме [Свойство] и [Имена], потому что, очевидно, с этими полями в тексте читатель не будет читать, потому что они не читаются из цикла while.

Что было бы хорошим способом сделать это?

0

Решение

Вы должны сделать немного более сложный анализ.

Итак, попробуйте это:

  • Прочитайте строку.
  • Решите, как это обработать.
    • А) Пропустить.
    • Б) Разобрать в переменные.
1

Другие решения

Вы не можете «игнорировать» строки, но вы можете «пропустить» их.

Я бы посоветовал читать последовательно построчно станд :: GetLine тогда пропустите неинтересные вещи.

Обратите внимание, что на самом деле строки не существуют в большинстве файловых систем (по крайней мере, в Posix). Линии просто условно заканчиваются \n но файл представляет собой последовательность байтов.

0

Вы должны читать построчно и определять, собираетесь ли вы обрабатывать эту строку.

Вы можете проверить, является ли первый символ [ или нет.

http://www.cplusplus.com/reference/string/string/at/

if (str.at(0) != '[')
{
//Process this line by splitting the string with space ect
}
0
По вопросам рекламы [email protected]