В настоящее время я пишу программу для сокетов на 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] это строка «Пользователь №2: Как дела, Дик?»
themsg [1] это строка "39416"
В первой строке должно быть написано "Пользователь № 2: Как дела, Дик?" к консоли, затем "39416".
Во второй строке должно быть напечатано «Фаза 3: Supernode отправил сообщение. Пользователь № 2: Что случилось, Дик? На динамическом порту номер 39416»
Вывод консоли выглядит следующим образом:
394162:What's up Dick?
on dynamic port number 39416essage User#2:What's up Dick?
Я знаю, что themsg [0] и themsg [1] верны, потому что я записал их значения в файл для проверки. Это определенно должно быть какой-то странной проблемой.
В первой строке 5 символов themsg [1] перезаписывают первые пять символов themsg [0]. Во второй строке кажется, что первые два параметра для cout игнорируются, а затем добавляется фрагмент сообщения.
Если кто-нибудь может помочь, я был бы очень признателен. Я пытался использовать flush (), но безрезультатно. Я не совсем уверен, как работает выходной буфер, поэтому я действительно потерян с этим.