[C++] Wczytywanie danych typu int z pliku .txt do zmiennych klasy
Ostatnio zmodyfikowano 2012-11-14 17:53
Bane Temat założony przez niniejszego użytkownika |
[C++] Wczytywanie danych typu int z pliku .txt do zmiennych klasy » 2012-11-12 20:20:41 Witam, Zacznę od mojej klasy: class punkt { public: int GetX() const { return x; } int GetY() const { return y; } void SetX( int x0 ) { x = x0; } void SetY( int y0 ) { y = y0; } private: int x, y; }; i potrzebuje nadać wartości a.x, a.y, b.x, b.y liczbami z pliku zbior.txt ktory wygląda tak: 1 -2\n 3 1\n ***koniec*** gdzie pierwszy wiersz to współrzędne punktu a (odpowiednio x-owa i y-owa) a drugi wiersz współrzędne punktu b. Czytałem kurs ale nie za bardzo rozumiem. Z góry dziękuję za pomoc. |
|
DejaVu |
» 2012-11-12 20:44:09 Pokaż fragment kodu odpowiedzialny za wczytywanie pliku (tj. efekt podjętych prób). |
|
Bane Temat założony przez niniejszego użytkownika |
» 2012-11-12 22:39:41 Oto fragment main(). int a[3] wyświetla kod ASCII dla "4" a nie 4. Jak sobie z tym poradzić? I czy nie ma jakiejś bardziej efektywnej metody na odczytywanie danych z pliku i przypisywanie zmiennym typu int albo typu zdefiniowanym w klasie? ifstream fin( "zbior.txt" ); char ch[ 5 ]; int i; int a[ 5 ];
for( i = 0; i <= 5; i++ ) { fin.get( ch[ i ] ).ignore( 1, 32 ); a[ i ] = ch[ i ]; } cout << a[ 3 ] << endl; cout << ch[ 3 ] << endl;
plik zbior.txt to: 1 2 3 4 5\n zmodyfikowałem nieco zadanie w ramach treningu, idea ta sama. |
|
ison |
» 2012-11-12 23:13:03 Niepotrzebnie używasz geta. Możesz bezpośrednio wczytać inta ifstream fin( "zbior.txt" ); int a, b, c, d; fin >> a >> b >> c >> d;
|
|
Bane Temat założony przez niniejszego użytkownika |
» 2012-11-14 17:53:46 Ok. Działa. A co teraz jeśli mój plik wygląda tak: 1\n 2 3 4\n
jak dam fin >> a gdzie "a" jest typu int, "a" otrzyma wartość jeden. Ale potem gdy w nowym wierszu dam fin >> b >> c >> d; "b" otrzymuje 0 a nie 2. Dlaczego tak jest i jak dostać się do nowej linii? --EDIT Ok. takie coś pomogło int main() { int a, b, c, d, e, f, g; ifstream fin( "zbior.txt" ); fin >> a >> b >> c; fin.ignore( 2, '\n' ); fin >> d >> e >> f; fin.ignore( 2, '\n' ); fin >> g; cout << a << " " << b << " " << c << " " << d << " " << e << " " << f << " " << g; return 0; }
tylko nie wiem dlaczego pomaga pominięcie dwóch znaków '\n' a pominięcie jednego już nie. Będę wdzięczy jak ktoś mi to wytłumaczy. |
|
« 1 » |