在C++中,当我们需要打印单个空格时,我们可能会执行以下操作:
cout << ' ';
Run Code Online (Sandbox Code Playgroud)
或者我们甚至可以使用转换后的ASCII代码来表示空间:
cout << static_cast<char>(32); //ASCII code 32 maps to a single space
Run Code Online (Sandbox Code Playgroud)
我意识到,打印空字符也会导致打印一个空格.
cout << static_cast<char>(0); //ASCII code 0 maps to a null character
Run Code Online (Sandbox Code Playgroud)
所以我的问题是:所有C++编译器都是通用的,当我打印时static_cast<char>(0),它总是在显示器中显示为单个空格吗?
如果它是通用的,当我使用文件输出流时它是否适用于文本文件?
不,它在每个编译器中都是零(0)字符.似乎您使用的字体将零字符渲染为空格.例如,在过去,DOS有一个不同的图像(一个几乎填充的矩形)为零字符.
无论如何,你真的不应该输出零个字符而不是空格!
对于文本文件部分:使用十六进制编辑器打开输出的文件以查看写入的实际位.你会看到那里的差异!
在我的电脑上,这段代码
#include <iostream>
int main() {
std::cout << "Hello" << static_cast<char>(0) << "world\n";
}
Run Code Online (Sandbox Code Playgroud)
输出这个:
Helloworld
Run Code Online (Sandbox Code Playgroud)
所以不,它显然不起作用。
| 归档时间: |
|
| 查看次数: |
1580 次 |
| 最近记录: |