Чтение файла, в котором отчество не обязательно

0

Я пытаюсь прочитать в файле, отформатированном как

firstName middleName (необязательно) lastName petName\n

Поскольку среднее имя находится на половине записей, я не уверен, как лучше всего их прочитать и получить в правильные имена переменных. Любая помощь будет принята с благодарностью.

Теги:
string
file
file-io
cin

2 ответа

3
Лучший ответ

Вы могли бы сделать что-то вроде этого:

std::string line, word;
while (std::getline(myFile, line)) {
    if (line.empty()) continue;        

    // read words from line:
    std::istringstream is(line);
    std::vector<std::string> words;
    words.reserve(4);
    for (int i = 0; is >> words && i < 4; i++)
        words.push_back(word);

    if (words.size() == 4)
        // middle name was present ...
    else
        // it was not ...
}
  • 0
    for (int i = 0; is >> words; i++) или просто while (is >> words) ?
  • 0
    @ 0x499602D2 :: Хех, простите. Когда я набирал текст, я тоже хотел поставить туда i < 4 чтобы больше слов не читалось.
1

Если только middleName является необязательным, вы можете разделить строку и сохранить слова в std::vector<std::string>. Затем проверьте, равен ли размер vector 4, тогда у вас есть middleName. Если размер равен 3, вы этого не сделаете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню