Dobry,
Ja naprawde przepraszam za tytul (i za brak polskich znakow), ale nie mam zielonego pojecia o co moze chodzic... Kod wyglada nastepujaco (nie ma wiekszego sensu tutaj, ale w wiekszym projekcie owszem, wiec prosze, nie pytajcie "dlaczego chcesz zrobic...."):
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
string sort (string slowo){
string litery = slowo;
for (int i=0; i<litery.length()-1; i++)
for (int j=0; j<litery.length()-1; j++)
if (litery[j]>litery[j+1])
(3) swap(litery[j], litery[j+1]);
return litery;
}
int main()
{
fstream wordlist;
wordlist.open("wordlist_test",ios::in);
vector<string> words;
(4) while (!wordlist.eof()){
bool ok = true;
string word;
getline(wordlist,word);
string sorted = sort(word);
if (ok){
(1) cout<<word<<endl;
words.push_back(word);
}
}
for (int i = 0; i<words.size(); i++){
(2) cout<<words[i]<<endl;
}
}
Sa cztery slowa w pliku "wordlist_tests". Program na koncu powinien po prostu zapisac je do wektora a potem jego zawartosc wypisac na standardowe wyjscie. Problem jest nastepujacy:
- jak kolwiek w linii (1) mam dowod, ze wszystkie slowa sa odczytane prawidlowo
- w linii (2) vector okazuje sie byc pusty
teraz czesc interesujaca (prawdopodobnie tylko dla mnie ::):
sa dwa sposoby by problem zniknal:
- po prostu usunac linie (3) (jakkolwiek, o ile mam racje, poniewaz parametr jest przekazywany do funkcji sort() poprzez wartosc, to zamienia dwie litery w zasadzie niezaleznej zmiennej, nie ma nic wspolnego z moim vectorem), lub:
- zmiana warunku w petli while (4) na na przyklad:
int tmp = 0;
while (tmp < 5){
tmp++;
/..../
Co jest nie tak z tym kodem? Jak powinnam zapisac slowa do wektora z pliku nie rezygnujac z sortowania i z petli while? Nie moge tu znalezc zadnych zaleznosci (ok, widze, ze laczy te miejsca zmienna word, ale wciaz nie wiem w jaki sposob). Pomozecie?