0

サーバーにメッセージを送信する関数を作成しようとしています。メッセージの送信は非常にうまく機能しますが、スペースを含む標準入力からメッセージをロードすることはできません...したがって、入力すると"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);
    }
}
4

2 に答える 2

3

cin 入力はスペース区切りです。行全体を入力したい場合は、次のようなものを使用します

getline (cin,message);
于 2013-05-30T22:32:39.747 に答える
2

cin は、文字列入力をスペースで区切ります。バイト バッファに入力するか、std::getlineを使用して改行で改行することをお勧めします。

于 2013-05-30T22:30:02.217 に答える