我目前正在用C++編寫一個套接字程序,並且在嘗試寫入控制檯(一個必需的任務)時出於某種原因偶然發現了非常奇怪的行爲。奇怪的標準輸出行爲
cout << themsg[0] << themsg[1] << endl;
cout << "Phase 3: Supernode sent the message " << themsg[0] << " on dynamic port number " << themsg[1] << endl;
themsg [0]是字符串「User#2:What's up Dick?」
themsg [1]是字符串 「39416」
第一行應該寫 「用戶#2:怎麼了迪克」到控制檯,然後是「39416」。
第二行應打印「第3階段:超級節點發送的郵件用戶#2:這是怎麼回事迪克動態端口號39416」
控制檯輸出內容如下:
394162:What's up Dick?
on dynamic port number 39416essage User#2:What's up Dick?
我知道msg [0]和msg [1]是正確的,因爲我將它們的值寫入文件進行驗證。肯定會有一些奇怪的stdout問題。
對於第一行,它顯示themsg [1]的5個字符覆蓋了msg [0]的前五個字符。對於第二行,似乎忽略了cout的前兩個參數,然後添加了一個消息片段。
如果有人能幫忙,我會很感激。我嘗試使用flush()但無濟於事。我不確定輸出緩衝區是如何工作的,所以我真的很迷茫。
代碼是多線程的嗎? –
顯示一些代碼,包括'themsg'數組的初始化。 –
問題已解決。該字符串附加了/ r虛擬回車符。哎呀! – aaronmar