iostream错误地打印椭圆

时间:2014-03-12 19:34:41

标签: c++ visual-studio-2010 stdout

我有一段简单的示例代码

#include <string>
#include <stdio.h>
#include <iostream>

int main ()
{
    std::cout << "Connecting to hello world server…" << std::endl;
    printf ("Connecting to hello world server...\n");

    while(true)
    {
    }
}

在控制台窗口中,第一行将椭圆打印为“a”字符,其上方有一个波浪号,第二行按预期打印。

有人可以解释为什么会这样吗?

4 个答案:

答案 0 :(得分:5)

第一行没有"...",只有一个字符"…"

变化:

 std::cout << "Connecting to hello world server…" << std::endl;

 std::cout << "Connecting to hello world server..." << std::endl;

答案 1 :(得分:1)

你的第一个椭圆是一个unicode水平省略号,而你的第二个椭圆是三个连续的句号。

答案 2 :(得分:1)

在第一个中,您有一个称为HORIZONTAL ELLIPSIS的角色。

在第二个中,它是3 period s

答案 3 :(得分:1)

正如其他人所解释的那样,第一个使用单个Unicode字符NEXT LINE (NEL) (U+0085),而第二个使用三个句点。

至于为什么第一个不起作用,它是控制台窗口的限制。它不像Windows的其他部分那样在Unicode中工作,它适用于代码页。

表示大多数字符的数字值与它们的Unicode字符完全不同,因此会打印错误的字符。

在这种情况下,Code page 437中的\x85字符是您看到的à