我有一段简单的示例代码
#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”字符,其上方有一个波浪号,第二行按预期打印。
有人可以解释为什么会这样吗?
答案 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
字符是您看到的à
。