Sorry, że nazwa tematu jest niezbyt dokładna. Zamiast zakładać milion różnych tematów, to wyłącznie w tym temacie chciałbym zadawać proste pytania co do obsługi .txt.
Zawartość mojego pliku:
1 2
3 4
5 6
7 8
9 10
11 12
Chciałbym lewą kolumnę załadować do pierwszej tablicy intów, drugą kolumnę do drugiej tablicy intów. I wszystko działa dobrze:
#include <iostream>
#include <fstream>
//#include <vector>
int main()
{
std::ifstream MyFile;
MyFile.open("D:/zapis.txt");
if (MyFile.good())
std::cout << "MyFile.open has succeeded\n\n";
else {
std::cout << "MyFile.open has failed\n\n";
return -1;
}
// count number of lines inside .txt to precisely determine arrays' size
int number_of_lines = 0;
std::string line;
while (!MyFile.eof()) {
std::getline(MyFile, line);
number_of_lines++;
}
MyFile.seekg(0, std::ios::beg); // go to beginning of .txt
int FirstColumn[number_of_lines], SecondColumn[number_of_lines];
// read into arrays
for (int i = 0; !MyFile.eof(); i++)
MyFile >> FirstColumn[i] >> SecondColumn[i];
// display arrays
for (int i = 0; i < number_of_lines; i++)
std::cout << FirstColumn[i] << '\t' << SecondColumn[i] << '\n';
}
Co jeśli mój plik tekstowy zawierałby więcej kolumn (nieznana liczba), ale chciałbym tylko dwie pierwsze kolumny ładować do dwóch tablic/wektorów? W różnych wierszach różna liczba kolumn np. taki plik .txt:
1 2 555 656
3 4 444
5 6 3
7 8
9 10
11 12 11162 4 5 5 4
Myślałem żeby zrobić coś w stylu:
// read into arrays
for (int i = 0; !MyFile.eof(); i++) {
MyFile >> FirstColumn[i] >> SecondColumn[i];
(Wymuś przejście do następnej linii);
}
Jakiś pomysł jak najprościej to zapisać?