[C++] Przepisanie danych z pliku txt do tablicy

Hej,

Posiadam plik tekstowy, który posiada 527 wierszy oraz 5 pozycji w każdym wierszu oddzielonych tabulatorem “\t”.

int main()

{

	string items[537][5];	

   ifstream data;

	data.open("items.txt", ios::in);


        // Tu powinno być dodanie pliku txt do tablicy 


        //Inne dziłanie na danych


	data.close();


	return 0;

}

Niestety nie miałem styczności z obsługą pliku, dlatego byłbym wdzięczy za wytłumaczenie jak te dane wczytać do tablicy, żeby program jakoś wiedział, że po tabie ma przejść do kolejnej komórki a po znaku entera do nowego wiersza i dalej wczytywać aż do końca pliku.

std::ifstream obsługuje się tak jak każdy inny strumień wejściowy (tak jak np. std::cin).

Możesz zrobić np.

for(int i = 0; i < 537; ++i)

	for(int j = 0; j < 5; ++j)

		data >> items[i][j];

Strumień będzie odczytywał kolejne napisy do białego znaku (zarówno tabulator jak i koniec linii są białymi znakami).

Jak chcesz bardziej restrykcyjny parser to możesz się getline’ami pobawić :wink:

PS Staraj się unikać magicznych liczb, każda wartość, która ma jakieś znaczenie powinna mieć swoją nazwę, łatwiej wtedy czytać kod.

int main()

{

    string items[537][5];

    ifstream data("items.txt");

    for (int i = 0; i<537; ++i) {

        for (int j = 0; j < 4; ++j)

            getline(data, items[i][j], '\t'); // wczytaj wszystko do tabulatora

        getline(data, items[i][4]); // wczytaj wszystko do końca linii

    }

    return 0;

}

http://en.cppreference.com/w/cpp/string … ng/getline