Czyszczenie string funkcją clear().

0

Witam

Piszę program w którym zamieniam int na string a następnie odwracam kolejność tych liczb w pętli for. Po wykonaniu pierwszej pętli zostają artefakty które wpływają na wyniki drugiej pętli. Próbowałem wyczyścić łańcuch funkcją clear() oraz pętlą for znaki[i]="" niestety ona nie działa, bo z tego co zrozumiałem jeśli dodaję [] do zmiennej string wtedy pracuję na zmiennej char.

#include <iostream>
#include <stdlib.h>

using namespace std;

int main()
{
            string znaki("napis");

        cout<<"Znaki: "<<znaki[0]<<endl;
        cout<<"Znaki: "<<znaki[1]<<endl;
        cout<<"Znaki: "<<znaki[2]<<endl;
        cout<<"Znaki: "<<znaki[3]<<endl;
        cout<<"Znaki: "<<znaki[4]<<endl;
        cout<<"Znaki: "<<znaki[5]<<endl;
        cout<<"Znaki: "<<znaki[6]<<endl;

                    znaki.clear();

        cout<<"Znaki: "<<znaki[0]<<endl;
        cout<<"Znaki: "<<znaki[1]<<endl;
        cout<<"Znaki: "<<znaki[2]<<endl;
        cout<<"Znaki: "<<znaki[3]<<endl;
        cout<<"Znaki: "<<znaki[4]<<endl;
        cout<<"Znaki: "<<znaki[5]<<endl;
        cout<<"Znaki: "<<znaki[6]<<endl;

    return 0;
}
 

Program który piszę ma na celu stworzenie z liczby od 1 do 80, palindroma poprzez dodawanie odwrotności liczby np. 24+42=66, lub 67+76=143 143+341= 484. Jeśli ktoś chciałby w niego ewentualnie zerknąć podaję linka.
https://ideone.com/4VnUvX

Pozdrawiam i z góry dziękuje za pomoc

0

O to chodziło?

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

int main()
{
	int liczba = 43;
	string lancuch = to_string(liczba);
	reverse(begin(lancuch), end(lancuch));
	cout << liczba + stoi(lancuch) << endl;
}
0

Twój kod wygląda bardzo ładnie i przejrzyście problem w tym że u mnie się nie kompiluje.
Ale głównym problemem jest czyszczenie łańcucha string, funkcją clear() która nie działa.

0

Ależ czyści tylko, że Ty chcesz wypisywać znaki z już nie swojej pamięci. Elementów tablicy, które chcesz wypisać, już dawno nie ma. Długość tego stringa po wyczyszczeniu jest równa zero.

Zobacz:
https://ideone.com/mWJDkA

Gdyby było tak jak mówisz to w polu "Po:" byłby dalej ten sam napis.

A nie kompiluje się, bo to jest c++11.

1

był już podobny wątek i ostało mi się coś takiego: http://ideone.com/4DSZWH

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