Nie wyświetla stringa, mimo że jest

0

cześć, piszę sobie prosty kodzik zamieniajacy liczbę dziesiętną na binarną, jednak mam pewien dziwny problem.
kod wygląda tak

int main()
{
int liczba;
cout << "Podaj liczbę";
cin >> liczba;
cin.ignore();
int i=0;
int reszta;
string reszta_string;

do{
   reszta=liczba%2;
//   cout << liczba << "\t"<<reszta<<endl;
   reszta_string[i]=reszta+'0';
   liczba=liczba/2;
   i++;
   }
   while(reszta<=liczba);

cout << reszta_string;
cout << "koniec";
getchar();
}
 

Chcę w stringu reszta_string zapisywać kolejno cyferki(1,0,0,1), potem jeszcze przewrócić do góry nogami ;] a potem wyświetlić stringa, ale nie wiem czemu, nic się nie wyświetla, tak jakby reszta_string było puste, a wiem, że nie jest puste, bo jak dam

cout << reszta_string[0] (lub inny element), to poprawnie wyświetla wartość.
próbowałem też dać '\0' jako ostatni znak stringa, ale to nie pomaga.

co prawda można wyświetlić tego stringa za pomocą pętli

while(i>=0)
{
cout << reszta_string[i];
i--;
}

ale nie rozumiem, czemu nie można go normalnie wyświetlić za pomocą cout << string ?

3

o_O bo stworzyłeś stringa PUSTEGO o rozmiarze 0, a następnie na pałę wpisujesz jakieś wartości do jego "kolejnych elementów". Ten string się sam nie rozciągnie. C++ po prostu nie sprawdza zakresów. To tak jakbyś zrobił tablicę która ma 0 elementów a pisał do 1,2,...10 elementu. "Możesz" tak zrobić, ale tablica nadal ma 0 elementów a ty zwyczajnie zamazałeś dane które znajdowały się "za" tą tablicą.

reszta_string+=(reszta+'0');
0

zapominasz ze przypisujesz inta + chara do chara. Nie rzutujesz tego inta nigdzie.

http://ideone.com/OfyZ8S
tutaj masz wersje z c++11

http://stackoverflow.com/questions/5590381/easiest-way-to-convert-int-to-string-in-c
tu masz jak zapisywac do stringa

jak chcesz do chara to po prostu zrob
char(liczba)

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