Usunięcie końcowego fragmentu tekstu do pierwszego znaku "/"

0

Potrzebuje uciąć od końca tekstu fragment do pojawienia się znaku: '/'
Jednak zbytnio się zapętliłem. Czy ktoś da rade rozwiązać? :)

#include <iostream>

using namespace std;

int main()
{
    string adress = "/qwe/asd/zxc.txt";
    /*
    size_t pozycja;
    pozycja = adress.find("/");
    cout << pozycja << endl << endl;
    */

    int dlugosc;
    dlugosc = adress.length();
    for (dlugosc-1; dlugosc >= 0 ; dlugosc--)
    {
        while (adress[dlugosc]!='/')
        {
            cout << adress[dlugosc];                      //sprawdzenie//
        }
    }
    return 0;
}
0

Użyj reverse iteratorów.

    auto found = std::prev(std::find(adress.rbegin(), adress.rend(), '/').base());
    adress.erase(found, adress.end());

https://wandbox.org/permlink/A6VQtYC7t5ZWkvfr

0

Dzięki, prawie wszystko ok, ale: nie mam c++11.
Znalazłem fraze którą musze wstawić: -std=c++11 tylko nie wiem w którym miejscu

0
Finderr napisał(a):
        while (adress[dlugosc]!='/')
        {
            cout << adress[dlugosc];                      //sprawdzenie//
        }

i jak niby z tej pętli się wychodzi?

0

Faktycznie, bez sensu zmienilem na cos takiego co wydaje sie byc ok, ale wylicza mi chyba wszystkie znaki z ASCII zamiast mojego napisu

#include <iostream>

using namespace std;

int main()
{
int dlugosc;
    dlugosc = adress.length();

    while (adress[dlugosc]!='/')
        {
            cout << adress[dlugosc];
            adress[dlugosc]--;
        }




    return 0;
}
0

To teraz pomyśl co zmniejszasz w instrukcji

 adress[dlugosc]--;
0

Samo adress[dlugosc] nie ma sensu, bo indeksy elementów to [0..dlugosc)

PS: to nie UB.

0
Miang napisał(a):

To teraz pomyśl co zmniejszasz w instrukcji

 adress[dlugosc]--;

No i pomyslałem i wymyslilem jakie głupoty wypisuje xd Teraz działa.

#include <iostream>

using namespace std;

int main()
{
    int dlugosc;
    dlugosc = adress.length();

    while (adress[dlugosc]!='/')
        {
            cout << adress[dlugosc];
            dlugosc--;
        }

    return 0;
}
0

Zapomanialem dokleic: string adress

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