C++
KiedyśInformatyk: Jak usunac konkretny znak z danego stringa?
np.
string txt="ro.we.r"
I chcialbym usunac wszystkie wystąpienia kropki
Iteruje petla po txt[i] i jak znajde kod ascii kropki to?
Nie wiem jak usunac... Funkcja erase z biblioteki string nie dziala
Albo zle ja uzywam
Probowalem po prostu dac '\0' ale ten znak traktuje jak spacje i mi owszem zastepuje kropke ale
spacja
Pomozcie ! Jezyk cp
Plis
8 maj 14:53
Kaspian: mozesz stworzyc nowa tablice znaków string i do niego zapisywac w petli wszystkie znaki oprucz
kropki
8 maj 14:56
Kaspian: oprócz*
8 maj 14:56
Kaspian: kropka ="."
8 maj 14:57
Rafal: Być może dlatego nie działa, że w trakcie usuwania zmieniasz rozmiar stringa.
8 maj 15:00
KiedyśInformatyk: No ok fajno... Jakis pomysł jest z ta tablica...
Ale ktos ma jeszcze jakis inny?
8 maj 15:14
Rafal: Sprawdź ten kod:
#include <iostream>
#include <string>
int main() {
std::string txt="ro.we.r";
for (int i = 0; i < txt.size(); ++i) {
if (txt[i] == '.') {
txt.erase(i, 1);
−−i;
}
}
std::cout << txt << "\n";
return 0;
}
8 maj 15:15
Kaspian: Napis.erase( odkąd usuwasz, ile znaków usuwasz );
8 maj 15:18
Kaspian: tak jak rafał
8 maj 15:18
8 maj 15:33
KiedyśInformatyk: dzieki wam
8 maj 15:37
Dziadek Mróz:
#include <iostream>
#include <string>
int main() {
std::string str = "ro.we.r";
na szybko: # include <algorithm>
str.erase(std::remove(str.begin(), str.end(), '.'), str.end());
podejście 2:
size_t pos = str.find(".");
while (pos != std::string::npos) {
str.erase(pos, 1);
pos = str.find(".", pos+1);
}
return 0;
}
8 maj 16:01