Iostream打印省略号错误

iostream prints ellipses wrong

本文关键字:错误 省略号 打印 Iostream      更新时间:2023-10-16

我有一段简单的示例代码

#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'字符,上面有一个波浪,第二行按预期打印。

有人能解释一下为什么会这样吗?

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

改变:

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

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

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

在第一个中,您有一个称为水平ELLIPSIS的单个字符。

第二个是3 period s

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

至于为什么第一个不能工作,这是控制台窗口的限制。它不像Windows的其他部分一样在Unicode中工作,它与代码页一起工作。大多数字符的数值将与对应的Unicode字符完全不同,因此将打印错误的字符。

在这种情况下,代码页437中的x85字符是您看到的à