Czyszczenie string funkcją clear().

Odpowiedz Nowy wątek
2015-06-06 09:30
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

Pozostało 580 znaków

2015-06-06 09:54
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;
}

Pozostało 580 znaków

2015-06-06 10:02
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.

Pozostało 580 znaków

2015-06-06 10:08
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.

Pozostało 580 znaków

2015-06-06 10:31
1

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


Jeśli chcesz pomocy, NIE pisz na priva, ale zadaj dobre pytanie na forum.
edytowany 2x, ostatnio: MarekR22, 2015-06-06 10:33

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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