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 回答