Probleme mit String
-
Hallo!
Im Prinzip habe ich folgendes:
string eingabe;
Übernimmt eine Usereingabe über das Netzwerk (per Socket).
string back = " Autor: xyz";eingabe = eingabe + back;
Wenn ich das jedoch ausgebe bekomme ich folgendes:
Hier steht die Usereingabe, die der User über die Sockets gesendet hat.
Autor: xyzWas ich will wäre jedoch:
Hier steht die Usereingabe, die der User über die Sockets gesendet hat. Autor: xyz
Also, alles in einer Zeile, die eingabe Variable scheint aber an letzter Stelle einen Zeilenumbruch zu bekommen, die Frage ist nun wie ich den webekomme?
LG
-
Um die Eingabe des Strings abzuschließen tut der User was?
Genau er drückt Enter -> Enter == '\n' == Zeilenumbruch.
Lösch also einfach das letzte Zeichen von Eingabe,
da fällt mir auf die schnelle nix besseres ein
als eingabe.erase(eingabe.end()-1),
und mache danach eingabe += back;Hat im übrigen nix mit Linux zu tun.
-
"Aborted (core dumped)"
in der Zeile mit dem eingabe.erase(eingabe.end()-1)
...
-
Versuch doch das letzte Zeichen mit getchar(); abzufangen
mfg kaffee
-
int getchar ( void );
Get character from stdin
Returns the next character from the standard input (stdin).
It is equivalent to getc with stdin as its argument.Wie soll mir das helfen? :S
-
Um das '\n' abzufangen
mfg kaffee
-
aber ich habe einen string:
string eingabe = "text\n"
der sieht in dem fall so aus.wie kann ich mit getchar() das \n abfragen?
ist es dann nicht besser mit string replace / find zu arbeiten?lg
-
hab das jetzt so versucht zu lösen:
eingabe.replace(eingabe.find("\n"), "2", " ");
-> Gibt mir aber ein Fehler:
-> what(): Exeception out of Range?
-
doppel schrieb:
hab das jetzt so versucht zu lösen:
eingabe.replace(eingabe.find("\n"), "2", " ");
-> Gibt mir aber ein Fehler:
-> what(): Exeception out of Range?
Warum ist denn die Zwei in Anführungszeichen? Und Warum willst du zwei Zeichen ersetzen. "\n" ist nur ein Byte.
#include <iostream> #include <string> using namespace std; int main () { string eingabe = "Hallo\nIch bin da"; cout<<eingabe<<endl; size_t pos = eingabe.find("\n"); eingabe.replace(pos, 1, " "); cout<<eingabe<<endl; // Vorschlag von Storm.Xapek.de eingabe.erase( --eingabe.end()); cout<<eingabe<<endl; return 0; }
Wenn das "\n" immer am Ende steht, dann nimm lieber die methode von Storm.Xapek.de, weil weniger Rechenaufwand.