为什么“std::cout << char() << std::endl;" not even print a new line on Compiler Explorer?

问题描述 投票:0回答:1

这段代码,

#include <iostream>
int main() {
    std::cout << "---" << std::endl;
    std::cout << char() << std::endl;
    std::cout << "---" << std::endl;
}

打印

---
---

为什么

std::endl
不会导致另外两条线之间出现一条新线?

删除

char() <<
使输出成为我期望的

---

---
c++ iostream line-breaks cout compiler-explorer
1个回答
-1
投票

原因是

char()
创建了默认值为0的
char
,在ASCII中它是结束字符串的NUL终止符(
\0
)。您可以将
char()
更改为
"it is visible \0 and it is not"
之类的内容,并且
\0
之后的字符串部分将被删除。
std::endl
也会发生同样的情况,只是被丢弃了。

© www.soinside.com 2019 - 2024. All rights reserved.