Если у вас есть контроль над форматом, это будет (немного) легче читать, если вы исключите запятые, и просто ввод как
е 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];
[Edit: если вы параноик или действительно нужно, чтобы подтвердить свой вклад в этот момент вы можете проверить, что 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));
Расскажите, что у вас есть. – bmargulies
Спасибо, ребята. C++ очень расстраивает меня, когда я сначала изучил Java. –
Хотя иногда это может расстраивать, это помогает удержать некоторые мощные библиотеки, которые не всегда связаны напрямую, как с Java. Представьте себе, насколько разочаровывает Java, если бы все, что у вас было, было основным языком и отсутствием библиотек. – joshperry