我试图写一个函数,它会向服务器发送一些消息。发送消息非常正常,我无法使用空格从标准输入加载消息...所以当我输入"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);
}
}
答案 0 :(得分:3)
cin输入是空格分隔的。如果您想输入整行,请使用
之类的内容getline (cin,message);
答案 1 :(得分:2)
cin用空格打破字符串输入。您可能更喜欢输入字节缓冲区或使用std::getline来换行符。