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 ?
pobieranie danych z pliku
- Rejestracja: dni
- Ostatnio: dni
- Postów: 61
- Rejestracja: dni
- Ostatnio: dni
#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: dni
- Ostatnio: dni
- Lokalizacja: JVM
- Postów: 179
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();
}
- Rejestracja: dni
- Ostatnio: dni
- Lokalizacja: Pabianice
std::fstream fin;
int tmp;
std::vector<int> nums;
//...
while(fin >> tmp) {
nums.push_back(tmp);
}
- Rejestracja: dni
- Ostatnio: dni
- 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: dni
- Ostatnio: dni
- 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: dni
- Ostatnio: dni
- 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: dni
- Ostatnio: dni
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));
}