Tablice Znaków/stringów

0

Witam.
Chce wczytać z pliku do tablicy stringów ewentualnie znaków poniższe dane.

abcd cdba dbac cbad dcba
barbakan xle ala foto otof
smok ayszkm lampa ayszkm bakara
skok arabanta oko agnieba dyskietka
...

Prubowałem tak:

string slowa[200][5]

	int i = 0;

	while(!odczyt.eof())
	{
		
			odczyt  >> slowa[i]
                                   i++;
	} 

Jednak zamiast wczytania 5 słów to do tej tablicy 5 elementowej wczytuje mi poklei znaki zamiast słów. Myślałem że sam string jest tablicą więc potraktuje mi to jako numer danego stringa a nie numer znaku w stringu. Co tutaj źle rozumuje ?
Więc spróbowałem tak:

 	string slowa[200][5][21]

	int i = 0;

	while(!odczyt.eof())
	{
		for(int j = 0 ; j < 5; j ++)
		{
			odczyt  >> slowa[i][j]
		}
        i++;
	}

Ale tak kompilator wywala mi błąd

error C2678: binary '>>' : no operator found which takes a left-hand operand of type 'std::ifstream' (or there is no acceptable conversion)

Wiem że da się utworzyć własny typ za pomocą struktury i tam wrzucić tablice stringów i utworzyć tablice tego nowego typu. Ale powinno się dać prościej ?

Jak powinienem rozwiązać ten problem ? C robię źle?

0

Dlaczego tworzysz tablice 2 albo 3 wymiarową?
Chcesz do tablicy wrzucic zawsze 5 wyrazow czy ma to byc zmienna ilosc?

0

nie dodałeś biblioteki <fstream> lub nie dodałeś using namespace std; i przez to musisz wpisac std::ifstream costam costam
poza tym, nie musisz dawać warunku while(!odczyt.eof()). wystarczy pętla

while(odczyt >> slowa[i]) i++;
0

Wiem Że jest 200 wierszy i w każdym jest 5 wyrazów. I chce zrobić tablice w która wczyta mi te dane bo potem będę musiał sprawdzać czy to anagramy. Te biblioteki mam właśnie dodane.

To jest kod całego programu:

 #include<iostream>
#include<fstream>
#include<string>
using namespace std;

int main()
{
	

	ifstream odczyt("anagram.txt"); if(!odczyt) cout <<" Blad odczyt";
	ofstream zapis("odp_4a.txt"); if(!zapis) cout <<"Blad zapisy";

	string slowa[200][5]

	int i = 0;

	while(!odczyt.eof())
	{
		for(int j = 0 ; j < 5; j ++)
		{
			odczyt  >> slowa[i]
		}
        i++;
	}

	system("pause");
}
0

Musisz podać do którego stringu chcesz pobierać wyrazy.

odczyt >> slowa[i][j];

i jest tu kolejnym wierszem, a j kolejnym słowem w wierszu.

0

Juz wszystko dziala. Debuger mnie zmylil a bylo ok. Dzieki

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