• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

zamiana elementów w stringach

Object Storage Arubacloud
0 głosów
525 wizyt
pytanie zadane 10 stycznia 2016 w C i C++ przez Magda Rieger Nowicjusz (190 p.)
mam dwa stringi  jeden zawiera format daty np :rrrr-mm-dd a chciałabym to zapisać na stringa w postaci dd.mm.rrrr czy jest na to jakis sposób , chcciałam zrobic element po elemencie ale to nie działa

4 odpowiedzi

+1 głos
odpowiedź 10 stycznia 2016 przez Adrian1999 Nałogowiec (34,570 p.)
biorąc pod uwagę to że ten format ma określoną liczbe to możesz po prostu wziąć dwa ostatnie znaki, i przesunąć je na początek, równocześnie robiąc tak z rokiem, przesunąć na koniec.. W nowym stringu ofc
komentarz 10 stycznia 2016 przez Magda Rieger Nowicjusz (190 p.)
mógłbyś mi to bardziej wyjaśnic
+1 głos
odpowiedź 10 stycznia 2016 przez Szykem2 Nałogowiec (29,510 p.)

Można użyć metody replace(size_t pos, size_t len, const char* s). A pozycje znaleźć metodą find.

std::string a = "11-11-2011";

while (a.find("-") < a.size()) {        //dopóki znajduje myślnik w słowie
	a.replace(a.find("-"), 1, ".");     //zamienia myślnik na kropkę
}
cout << a;

 

+1 głos
odpowiedź 10 stycznia 2016 przez nouveu Bywalec (2,560 p.)
Skorzystaj z funkcji append(), przykład:

buf.append(str,8,2) // dopisuje na końcu 'buf' 8 i 9 znak ze 'str'

Skopiujesz dzień, potem dokleisz miesiąc a następnie rok a pomiędzy wstawisz kropki.

Przykłady użycia: http://www.cplusplus.com/reference/string/string/append/
komentarz 10 stycznia 2016 przez Magda Rieger Nowicjusz (190 p.)
a co oznacza ta 2 ??
komentarz 10 stycznia 2016 przez nouveu Bywalec (2,560 p.)
Ilość znaków. Argumenty (str,8,4) dały by indeksy 8,9,10,11.
komentarz 10 stycznia 2016 przez Magda Rieger Nowicjusz (190 p.)
mam coś takiego jednak po skompliowaniu program przestaje działać { zmieniona_data.append(data,8,2); zmieniona_data.insert(3,kropka); zmieniona_data.append(data,5,2); zmieniona_data.insert(5,kropka); zmieniona_data.append(data,6,4); cout
komentarz 10 stycznia 2016 przez nouveu Bywalec (2,560 p.)
edycja 10 stycznia 2016 przez nouveu
Twój zapis dla kropki jest przezabawny :D Prawidłowy kod:

zmieniona_data.append(".");
komentarz 10 stycznia 2016 przez Magda Rieger Nowicjusz (190 p.)
mam to zdefiniowane wyżej tylko tego nie skopiowałam :)
komentarz 10 stycznia 2016 przez nouveu Bywalec (2,560 p.)

No to i tak źle, pierwsza linijka, wpisując kropkę powstaje dziura w stringu:
0 1 2 3
d d 0 '.'

I to samo w drugiej linii. Append jest lepszy bo nie musisz się martwić o to gdzie jest koniec napisu ;)

komentarz 10 stycznia 2016 przez Magda Rieger Nowicjusz (190 p.)
mam teraz cos takiego ale to dalej nie chce działać jak powinno ; dopiero jak w miejsce wpisze 7 to wtedy chociaż cos sie wyswietli ale niestety ze znakiem "-" na poczatku bo to sie chyba kopiuje z poprzedniego stringa zmieniona_data.append(data,8,2); zmieniona_data.insert(2,"."); zmieniona_data.append(data,5,2); zmieniona_data.insert(5,"."); zmieniona_data.append(data,0,4); cout
komentarz 10 stycznia 2016 przez Magda Rieger Nowicjusz (190 p.)
ok dziekuje bardzo już działa jak powinno :)
+1 głos
odpowiedź 23 lutego 2016 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
String jest sam w sobie tablicą. Twoj string zawiera 10 elementów.

Posługując się wskaźnikami oraz dodatkową zmienną możesz zamieć znaki z dd z mm. Co da Ci lustrzane odbicie tego co chcesz osiągnąć. Potem jeszcze raz używając wskaźników oraz pętlę for możesz odbić lustrzanie według takiego schematu:

1. Wybieramy "i" znak.

2. Zapisujemy "i" znak pod zmienną.

3. Zapisujemy pod wartością "i" wartość znaku "10-i" (pamiętaj, że tablice numerujemy od 0)

4. Zapisujemy pod wartością "10-i" wartość naszej zmiennej.

5. Przechodzimy tak do połowy tablicy.

Mam nadzieję, że wytłumaczyłem wystarczająco, gdybyś nadal nie rozumiała to w wolnej chwili napiszę dla Ciebie kilka linijek kodu wyjaśniające to ;)
komentarz 23 lutego 2016 przez Radfler VIP (101,030 p.)
Ale odkopałeś temat... Plus ode mnie za fatygę :D
1
komentarz 23 lutego 2016 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Nie podobał mi się sposób powyżej ;p a staram się pomagać w czym umiem :D

Podobne pytania

0 głosów
1 odpowiedź 430 wizyt
pytanie zadane 26 stycznia 2020 w C i C++ przez Oskardes Użytkownik (600 p.)
0 głosów
1 odpowiedź 303 wizyt
pytanie zadane 4 stycznia 2021 w C i C++ przez brzydki2 Początkujący (300 p.)
0 głosów
1 odpowiedź 167 wizyt
pytanie zadane 16 lutego 2018 w Java przez must Bywalec (2,980 p.)

92,579 zapytań

141,432 odpowiedzi

319,664 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...