Strings Satzzeichen entfernen
-
#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"); }