Strings Satzzeichen entfernen
-
@Dravere
Ok.. wie kann ich das beheben? Eigentlich nur mit der Methode von Freaky oder?
-
Da muss es doch eine Simple Lösung geben
Denn so viel habe ich ja noch nicht gelernt...
Zur Hilfe: Der momentane Abschnitt hat sich mit <cctype> beschäftigt. Das heißt Funktionen wie: isdigit, isalnum,...
Mein erster Ansatz war ja auch mit ispunct um die Satzzeichen zu finden, nur leider wusste ich nicht wie man sie dann entfernt
Aber ich vermute, dass es da eine ganz einfache Lösung gibt..
-
#include <iostream> #include <string> #include <cctype> using namespace std; int main() { string s, s2; cin >> s; for (string::size_type index = 0; index != s.size(); ++index) { if (!ispunct(s[index]) s2 += s[index]; } cout << s2 << endl; }
-
Klammer beim if vergessen.
-
#include <string> #include <algorithm> #include <cctype> #include <iostream> int main(int, char*[]){ std::string test = "xcvb uzxcuvibxcvb.- sdf.s ,sdfs.fsd fsdf.sdf:;sdfsdf"; test.erase(remove_if(test.begin(), test.end(), static_cast<int(*)(int)>(std::ispunct)), test.end()); std::cout << test << std::endl; }
-
Danke Bruder Lustig
Meins sieht jezt so aus:#include <iostream> #include <string> #include <cctype> using namespace std; int main() { string s1; getline(cin, s1); string s2; for (string::size_type ix = 0; ix <= s1.size(); ++ix) { if (!ispunct(s1[ix])) { s2 += s1; } } cout << s2 << endl; }
Wenn ich das Programm ausführe, wird die Eingabe mit Satzzeichen ausgegeben: Allerdings 10mal hintereinander -.-
-
ix <= s1.size(); ist falsch. <= geht einen zu weit, nimm <
-
Desweiteren s2 += s1; durch s2 += s1[ix]; ersetzen.
-
ok, wenn ich < s.size mache, dann wird doch der letzte buchstabe nicht mit einbezogen oder?
-
jezt klappt es... <= habe ich aber immer noch.
-
< ist aber richtig. Denn der letzte Buchstabe ist bei Index size()-1
-
bool my_ispunct(char c) { return std::ispunct(c); } std::string remove_punct(std::string const &in) { std::string out; out.reserve(in.size()); std::remove_copy_if(in.begin(), in.end(), std::back_inserter(out), my_ispunct); return out; } int main() { std::cout << remove_punct("Hallo! Welt.\n"); }