problem mit cin.getline()
-
also,
ich bin gerade dabei so ne art chat zu schreiben, um mal bissle socketprogrammierung zu verstehen.also die eingabe hatte ich am anfang mit cin, damit wird aber ja nur bis zu SPACE gelesen, also für nen chat ziemlich schlecht.
dann hab ich hier im forum was über cin.getline gelesen, in nem kleinen testprogramm hats auch super funktioniert aber nun sieht der code so aus und es funzt nicht mehr! liegt das evt. an der endlosschleife?while(true) { cin.getline(buffer, BUFFER_SIZE); bytes = send(c, buffer, strlen(buffer), 0); if (bytes == -1) return -1; bytes = recv(c, buffer, sizeof(buffer) - 1, 0); if (bytes == -1) return -1; buffer[bytes] = '\0'; cout << name << ": " << buffer << endl; }
-
da du cin.getline benutzt nehm ich an du benutzt char* .
Steig doch einfach auf string um da ließt du es normal mitint main(){ string s; cin>>s; return 0; };
ein und das '\0' wird auch schon gesetzt.
-
Wenn schon std::string, warum dann nicht gleich:
std::getline(cin, myText);
Das liest die ganze Zeile bis zum '\n'
MfG Jester
-
aber da funktioniert dann weder sizeof noch strlen oder?
also zumindest bei sizeof bin ich mir sicher.
-
Wozu strlen (was über die c_str-Elementfunktion von std::string doch geht), wenn man einfach meinString.length() schreiben kann?
-
ah danke, bin halt noch relativ neu beim programmieren.
jetzt hab ich noch eine kleine frage,wieviele zeichen passen in einen string? unendlich viele (also sind die dynamisch?) oder wo liegt die grenze?
-
da^devil schrieb:
also sind die dynamisch?
Ja, sind sie