Znalazłem funkcję getline() która pobiera cały wiersz jako string
Ja mam .txt z liczbami całkowitymi każda w nastepnym wierszu
istnieje jakaś funkcja która pobiera int "getint" xd ?
#include <string>
#include <iostream>
#include <fstream>
static const std::string filename = "plik.txt";
int main(){
std::ifstream f;
f.open(filename);
if(f.good()){
for(std::string readed="";f >> readed;){
int num;
try{
num = std::stoi(readed);
}catch(...){num = 0;}
std::cout << "read number: " << num << std::endl;
}
f.close();
}
}



- Rejestracja:około 8 lat
- Ostatnio:dzień
- Postów:155
Nie wiem co chcesz zrobić z pobranymi danymi ale przyjąłem, że zapiszesz je do tablicy
std::fstream file;
file.open("nazwa.txt", std::ios::in);
if (file.good()){
for (int i = 0; i < arraySize; ++i){
file >> array[i];
}
file.close();
}

array
i jak sprawdzić arraySize
.
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 4 lata
- Postów:61
ok dzięki skorzystam z rozwiązania 'kyio'
ps. jaką funkcją zliczyć liczbe elementów (każdy w nowej lini)
while(getline(X,values)) k++;
chciałem robić tak ale licznik k działa dobrze tylko po tej funkcji źle zczytuje daje operatorem >>
- Rejestracja:ponad 8 lat
- Ostatnio:ponad 4 lata
- Postów:61
wiem co robię źle funkcja getline przenosi mnie na koniec pliku
wie ktoś jak po zliczeniu linijek funkcją getline "zresetować strumie" zeby zacząć wczytywanie od początku ?

- Rejestracja:około 9 lat
- Ostatnio:ponad 5 lat
- Lokalizacja:Pabianice
http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Poruszanie-sie-po-pliku-w-trybie-do-odczytu/476
W artykule jest opisane jak poruszać się po pliku.
Odczytując plik do końca, wskaźnik plikowy dojeżdża do końca i sam nie wróci do początku.
Opcje masz dwie. Zamknij i ponownie otwórz plik lub wróć do początku pliku (file.seek(0)
).
PS: Korzystając z podrzuconego rozwiązanie z std::vector
uwalniasz się ze sprawdzania ilości linii.
Wczytujesz póki da się coś wczytać i dodajesz do tablicy.
Ilość linii to nums.size()
.

- Rejestracja:ponad 17 lat
- Ostatnio:2 minuty
std::vector<std::vector<int>> data;
std::string line;
while (std::getline(stream, line)) {
std::vector<int> rowData;
std::istringstream rowStream { line };
int x;
while (rowStream >> x)
{
rowData.push_back(x);
}
data.push_back(std::move(rowData));
}
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.