Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
奇怪的行为 我现在正在C++中编写一个套接字程序,当我试图写控制台(一个必需的任务)时,我发现了一些奇怪的行为。 cout << themsg[0] << themsg[1] << endl; cout << "Phase 3: Supernode sent the message " << themsg[0] << " on dynamic port number " << themsg[1] << endl;_C++_Buffer_Stdout_Std_Cout - Fatal编程技术网

奇怪的行为 我现在正在C++中编写一个套接字程序,当我试图写控制台(一个必需的任务)时,我发现了一些奇怪的行为。 cout << themsg[0] << themsg[1] << endl; cout << "Phase 3: Supernode sent the message " << themsg[0] << " on dynamic port number " << themsg[1] << endl;

奇怪的行为 我现在正在C++中编写一个套接字程序,当我试图写控制台(一个必需的任务)时,我发现了一些奇怪的行为。 cout << themsg[0] << themsg[1] << endl; cout << "Phase 3: Supernode sent the message " << themsg[0] << " on dynamic port number " << themsg[1] << endl;,c++,buffer,stdout,std,cout,C++,Buffer,Stdout,Std,Cout,我知道themsg[0]和themsg[1]是正确的,因为我将它们的值写入了一个文件以进行验证。这肯定是个奇怪的问题 第一行显示的是,MSG[1]的5个字符覆盖了MSG[0]的前5个字符。对于第二行,似乎忽略了cout的前两个参数,然后添加了一个消息片段 如果有人能帮忙,我会非常感激。我尝试使用flush(),但没有效果。我不太清楚输出缓冲区是如何工作的,所以我真的很迷茫。您可能在msg[0]的末尾有一个回车符\r。我可以在Linux上使用以下程序重现该行为: int main() {

我知道themsg[0]和themsg[1]是正确的,因为我将它们的值写入了一个文件以进行验证。这肯定是个奇怪的问题

第一行显示的是,MSG[1]的5个字符覆盖了MSG[0]的前5个字符。对于第二行,似乎忽略了cout的前两个参数,然后添加了一个消息片段


如果有人能帮忙,我会非常感激。我尝试使用flush(),但没有效果。我不太清楚输出缓冲区是如何工作的,所以我真的很迷茫。

您可能在
msg[0]
的末尾有一个回车符
\r
。我可以在Linux上使用以下程序重现该行为:

int main()
{
    std::cout << "User#2: what's up?\r" << "39416" << std::endl;
}
intmain()
{

std::cout您可能在msg[0]
的末尾有一个回车符,
\r
。我可以在Linux上使用以下程序重现该行为:

int main()
{
    std::cout << "User#2: what's up?\r" << "39416" << std::endl;
}
intmain()
{

std::cout我怀疑问题出在您的
主题
变量中。我测试了您的确切设置,并且使用了正确的值,它工作正常。但是,我随后测试了相同的设置,但在
themsg[1]
themsg[2]
的末尾添加了
\r
,并准确地了解了您的行为。作为字符串
themsg[1]
来自网络,可能包含行尾,并且来自不同的操作系统(例如UNIX与Windows)-这被转换为不带换行符的回车符-导致您看到的行为。

我怀疑问题出在
主题
变量中。我测试了您的精确设置-并且使用正确的值,它工作正常。但是,我随后测试了相同的设置,但在
主题[1]的末尾附加了
\r
themsg[2]
-并且准确地了解了您的行为。由于您的字符串
themsg[1]
来自网络,它可能包含行尾-并且来自不同的操作系统(例如UNIX与Windows)-这将转换为不带换行符的回车符-导致您看到的行为。

显示一些代码,包括
themsg
array的初始化。问题已解决。字符串附加了一个/r虚拟回车符。Yikes!显示一些代码,包括
themsg
array的初始化。问题lem被解决了。字符串被附加了一个/r虚拟回车符。哎呀!哇!非常感谢。它不仅解决了问题。我也学到了一些东西:-)。a\r怎么能附加到我的字符串上?这有时是串联的结果吗?@aaronmar:通常是在从一个以二进制方式从Internet连接或Windows文件中读取。Windows和基于文本的所有Internet协议都使用<代码> \r\n>代码>来表示结束。C++文本模式流可能会隐藏您的信息,但二进制流不会,并且UNIX平台上的文本和二进制文件是相同的。哇!非常感谢。不仅解决了问题。arned还有些东西:-)。如何将\r添加到我的字符串中?这有时是串联的结果吗?@aaronmar:通常是在从internet连接或Windows文件以二进制模式读取的字符串中仅剥离
\n
时产生的。Windows和所有基于文本的internet协议都使用
\r\n
来表示Text结尾。C++文本模式流可能隐藏了这些,但是二进制流没有,UNIX平台上的文本和二进制文件是相同的。