奇怪的cout行为

zoo*_*zoo 5 c++ cout

我在Ubuntu上编译了一个为Windows开发(并在其上工作)的程序.在Ubuntu上,我看到这段代码:

string s = values_[9];
cout << s << endl;
cout << s << "x\n";
Run Code Online (Sandbox Code Playgroud)

产生这个输出:

high
xigh
Run Code Online (Sandbox Code Playgroud)

第二行的预期输出是"highx".我知道values_ [9]的值最初是从文件中读取的(在Windows上编写).打印其他字符串似乎正常工作.

这里发生了什么?

Kei*_*son 8

运行命令,输出通过管道输出cat -A.可能是产生的值s或产生的输出endl给你一个'\r'字符,通常会将光标发送回行的开头.

编辑:进一步思考,流浪'\r'几乎肯定是在s,而不是由产生的输出endl.我原本以为可能会有一些有趣的语言环境,但有s相同的"high\r"解释症状.

编辑2:如果您的系统没有cat -A(它是GNU扩展),请尝试cat -v或,如果您绝望,od -c.