Jeśli masz kontrolę nad tym formacie, to będzie (nieznacznie) łatwiejsze do odczytania, jeśli wyeliminować przecinki, i po prostu wejście jak
e 225 370 35 75
Przy użyciu tego formatu, kod Poita_ do odczytu danych będzie działał [edytuj: on jest od aktualizacji swojego kodu, aby wyraźnie przeczytać i pominąć przecinki]. W przeciwnym razie trzeba wyraźnie przeskoczyć nad przecinkami:
char ingore1, ignore2;
char ch;
int i[4];
file >> ch >> i[0] >> ignore1 >> i[1] >> i[2] >> ignore2 >> i[3];
[Edit: jeśli jesteś paranoikiem czy naprawdę trzeba zweryfikować swój wkład, w tym momencie można sprawdzić, że ignore1
i ignore2
zawierać przecinków.]
W większości przypadków, jednak dane te są prawdopodobnie związane, więc będziemy chcieli, aby przeczytać całą linię w jednej struktury (lub klasy):
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];
}
};
zrobiwszy tego, można przeczytać cały obiekt data
na raz:
std::ifstream infile("my data file.txt");
data d;
infile >> d;
Albo, jeśli masz cały plik pełny z nich, można przeczytać je wszystkie do wektora:
std::vector<data> d;
std::copy(std::istream_iterator<data>(infile),
std::istream_iterator<data>(),
std::back_inserter(d));
Powiedz nam, co masz. – bmargulies
Dzięki chłopaki. C++ jest dla mnie bardzo frustrujący, ponieważ najpierw uczyłem się języka Java. –
Chociaż czasami może to być frustrujące, pomaga uzyskać kilka potężnych bibliotek, które nie zawsze są pakowane bezpośrednio tak jak w Javie. Wyobraź sobie, jak frustrująca byłaby Java, gdybyś miał tylko podstawowy język i brak bibliotek. – joshperry