Plik tekstowy odczytuje się tylko częściowo

2015-08-11 11:27
0

Witam!

Mam plik tekstowy w którym zapisane jest 1000 liczb czterocyfrowych, każda w osobnym wierszu.
Program ma odczytać te liczby i zapisać je do tablicy.
Problem polega na tym że odczytuje się tylko 300 ostatnich liczb. Pierwszą zapisaną liczbą w tablicy jest 701(siedemset pierwsza liczba w kolejności licząc od zera). Potem wszystko idzie w porządku i program nie zgłasza błędów.
Proszę o pomoc w rozwiązaniu problemu.
Oto kod:

#include <iostream>
#include <cstdio>
#include <fstream>
#include <sstream>

using namespace std;

int main() {

    int kody[1000];

    fstream plik("kody.txt");
    if (plik.good()) {
        string wiersz;
        for (int i = 0; i < 1000; i++) {
            getline(plik, wiersz);
            stringstream strumien(wiersz);
            strumien >> kody[i];
        }
    }
    plik.close();

    for (int i = 0; i < 1000; i++) {
        cout << kody[i] << endl;
    }

    getchar();
    return 0;
} 

Pozostało 580 znaków

2015-08-11 11:30

Odczytują się wszystkie. Windowsowa konsola może pomieścić tylko 300 linii i się przesuwają w wyniku czego widzisz tylko 300 ostatnich ;)

Przetestuj z tym to zobaczysz, że wszystkie się odczytują

for (int i = 0; i < 1000; i++) {
        cout << kody[i] << " ";
    }
edytowany 1x, ostatnio: stryku, 2015-08-11 11:31
Haha xD umarłem. To było takie proste :D - wazxse5 2015-08-11 11:37

Pozostało 580 znaków

2015-08-11 11:32
1

Po co wczytać jako string do strumienia, a potem dopiero ze strumienia do liczby?

for (int i = 0; i < 1000; ++i) 
    plik >> kody[i];
Dane odczytywane za pomocą strumienia są zawsze traktowane jako tekst, no i wtedy wywala błąd - wazxse5 2015-08-11 11:35
jaki błąd? - twonek 2015-08-11 11:55
Działa tak jak mówisz, błąd był gdzie indziej - wazxse5 2015-08-11 12:02

Pozostało 580 znaków

2015-08-11 11:55
0

Dane odczytywane za pomocą strumienia są zawsze traktowane jako tekst, no i wtedy wywala błąd

Wut?
fstream przy wczytywaniu z niego zmiennych jest taki sam jak stringstream. Tzn nie wiem czy w każdym aspekcie taki sam, ale na pewno poradzi sobie z intem, więc możesz śmiało robić to co poradził @twonek

edytowany 1x, ostatnio: stryku, 2015-08-11 12:07

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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