Чтение файла, где среднее имя является необязательным

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

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

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

2 ответа

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

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 ...
}
</std::string>


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

licensed under cc by-sa 3.0 with attribution.