Вы можете перегрузить оператор правого сдвига в istream для своей структуры, так:
std::istream& operator>>(std::istream& is, mypost_struct& mps) {
is >> mps.nr;
is.ignore(1, ';');
is.getline(mps.forename, 255, ';');
is.getline(mps.aftername, 255, ';');
is >> mps.dept;
is.ignore(1, ';');
is >> mps.position;
is.ignore(1, ';');
is >> mps.nr2;
return is;
}
Впоследствии ввод так же прост, как is >> mypost;
, где is
- это файл, который вы открыли.
Edit: @UncleBens Спасибо за указание на это, я забыл учесть пробелы. Я обновил ответ, предполагая, что имя и имя, вероятно, будут содержать пробелы. И было немного смущающе, что двойные кавычки ...
Я только что проверил, используя определение структуры, как показано ниже:
struct mypost_struct {
int nr;
char forename[255], aftername[255];
int dept, position, nr2;
};
.. и результат был ожидаемым.