Plik tekstowy odczytuje się tylko częściowo

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;
} 
2

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] << " ";
    }
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];
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

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