Если у вас есть контроль над форматом, будет (немного) легче читать, если вы удалите запятые, и просто введите, как
e 225 370 35 75
С этим форматом будет работать код Poita_ для чтения данных [править: он с тех пор обновляет свой код для явного чтения и пропуска запятых].В противном случае вам нужно явно пропустить запятые:
char ingore1, ignore2;
char ch;
int i[4];
file >> ch >> i[0] >> ignore1 >> i[1] >> i[2] >> ignore2 >> i[3];
[Редактировать: если вы параноик или действительно хотите подтвердить свой ввод, на данный момент вы можете проверить, что ignore1
и ignore2
содержит запятые.]
В большинстве случаев, однако, данные, вероятно, связаны, поэтому вы захотите прочитать всю строку в одну структуру (или класс):
struct data {
char ch;
int i[4];
std::istream &operator>>(std::istream &is, data &d) {
char ignore1, ignore2;
return is >> ch >> i[0] >> ignore1 >> i[1] >> i[2] >> ignore2 >> i[3];
}
};
Сделав это, вы можете одновременно прочитать весь data
объект:
std::ifstream infile("my data file.txt");
data d;
infile >> d;
Или, если у вас есть целый файл, полный этих файлов, вы можете прочитать их все в вектор:
std::vector<data> d;
std::copy(std::istream_iterator<data>(infile),
std::istream_iterator<data>(),
std::back_inserter(d));