Tablice Znaków/stringów

Tablice Znaków/stringów
V3
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 11 lat
  • Postów:30
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:

Kopiuj
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:

Kopiuj
 	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?

edytowany 3x, ostatnio: madmike
mbar254
  • Rejestracja:około 14 lat
  • Ostatnio:około 10 lat
  • Postów:47
0

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

MJ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 10 lat
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

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

Gdy się nie wie, co się robi, to dzieją się takie rzeczy, że się nie wie, co się dzieje ;-)
V3
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 11 lat
  • Postów:30
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:

Kopiuj
 #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");
}
edytowany 1x, ostatnio: viruss3000
byku_guzio
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 7 lat
0

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

Kopiuj
odczyt >> slowa[i][j];

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


edytowany 1x, ostatnio: byku_guzio
V3
  • Rejestracja:prawie 14 lat
  • Ostatnio:około 11 lat
  • Postów:30
0

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

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.