サーバーにメッセージを送信する関数を作成しようとしています。メッセージの送信は非常にうまく機能しますが、スペースを含む標準入力からメッセージをロードすることはできません...したがって、入力すると"Hello world!"
、出力として次のようになります。
*******Hello********
*******World!********
私はまったく初めてでC++
、この動作は私にとって非常に驚くべきものです。なぜそうなのか、どうすれば修正できるのか、誰かが私に説明してくれますか?
void * Client::sendMessage(void *threadid) {
string message;
const char * c;
char buffer[200];
int fd = (long) threadid;
while (true) {
cin >> message;
if (message == "exit") {
break;
}
cout<<"*******"<<message<<"********"<<endl;
c = message.c_str();
strncpy(buffer, c, sizeof ( buffer));
send(fd, buffer, strlen(buffer), 0);
}
}