2013-05-30 58 views
0

我想寫一個函數,它應該發送一些消息到服務器。發送消息的工作相當精細,neverthless我不能用空格來加載從標準輸入信息......所以,當我鍵入"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); 
    } 
} 
+1

'cin >> message'停止讀取空白處。 – chris

回答

3

cin input is space delimited。如果你想輸入整行,使用類似於

getline (cin,message); 
2

cin斷開字符串輸入的空格。您可能更願意輸入到字節緩衝區或使用std::getline通過換行符中斷。