从输入加载字符串时的奇怪行为

时间:2013-05-30 22:25:57

标签: c++

我试图写一个函数,它会向服务器发送一些消息。发送消息非常正常,我无法使用空格从标准输入加载消息...所以当我输入"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);
    }
}

2 个答案:

答案 0 :(得分:3)

cin输入是空格分隔的。如果您想输入整行,请使用

之类的内容
getline (cin,message);

答案 1 :(得分:2)

cin用空格打破字符串输入。您可能更喜欢输入字节缓冲区或使用std::getline来换行符。