Wczytanie danych z pliku txt

0

Mam plik tajne.txt

Wczytuję z niego dane za pomocą kodu:

    string z;
    ifstream plik;
    plik.open("tajne.txt");
    do
    {
    getline(plik,z);
    cout<<z<<endl;
    }
    while (!plik.eof());

Wszystko się ładnie z niego linia po linii wyświetla na monitorze.
Co zrobić, by komputer zapamiętał to co się wczytuje (tak samo jakby zawartość tego pliku była bezpośrednio w main umieszczona, a nie w oddzielnym pliku) i bym mógł z tego korzystać w późniejszych operacjach?

Np. w pliku załóżmy że mam:
c = 1;
d = 2;

Czyli

    int c, d;
    string z;
    ifstream plik;
    plik.open("tajne.txt");
    do
    {
    getline(plik,z);
    cout<<z<<endl;
    }
    while (!plik.eof());
    cout<<c*d<<endl;
1

Dane masz w postaci stringa. Żeby uzyskać je w zmiennej liczbowej, muisz przeprasować ciąg znaków. Czyli kolejno wyciąć część stringa w której jest liczba, a następnie zamienić tą część na liczbę. Do tego też musisz napisać funkcję. Wystarczy analizować poszczególne znaki(tutaj: sprawdzać czy znak jest liczbą i odejmować od znaku 48, bo: http://pl.wikipedia.org/wiki/ASCII ) i w zależności od miejsca w którym się znajdują pomnożyć przez odpowiednią potęgę dziesiątki.

Możesz też spróbować wczytywać dane w stylu C, za pomocą fscanf - http://www.cplusplus.com/reference/clibrary/cstdio/fscanf/

1

można też uzyć funkcji atoi(ciąg);. np.

 
string ciag = "123"; //to jest tekst;
int liczba = atoi(ciag); //ciag jest konwertowany na liczbe 

Jednak w stringu musza być tylko liczby, w przeciwnym wypadku zwróci 0.

1

Najprostsze parsowanie:

int c(0), d(0);
string z;
ifstream plik;
plik.open("tajne.txt");
while(getline(plik,z)) {
    istringstream linia(z);
    string symbol;
    char oper;
    int value;
    if (linia >> symbol >> oper >> value) {
        if (symbol=="c")
             c = value;
        else if (symbol=="d")
             d = value;
    }
}

cout<<c*d<<endl;

1 użytkowników online, w tym zalogowanych: 0, gości: 1