Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Wczytywanie danych typu int z pliku .txt do zmiennych klasy

Ostatnio zmodyfikowano 2012-11-14 17:53
Autor Wiadomość
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:

C/C++
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.
P-69063
DejaVu
» 2012-11-12 20:44:09
Pokaż fragment kodu odpowiedzialny za wczytywanie pliku (tj. efekt podjętych prób).
P-69068
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?

C/C++
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.
P-69091
ison
» 2012-11-12 23:13:03
Niepotrzebnie używasz geta. Możesz bezpośrednio wczytać inta
C/C++
ifstream fin( "zbior.txt" );
int a, b, c, d;
fin >> a >> b >> c >> d;
P-69092
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
C/C++
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.
P-69250
« 1 »
  Strona 1 z 1