我正在阅读对象的write
方法,basic_ostream
这是我在 cppreference 上找到的:
basic_ostream& write( const char_type* s, std::streamsize count );
表现为
UnformattedOutputFunction
. 构造并检查哨兵对象后,输出字符数组中第一个元素指向的连续位置的字符s
。字符被插入到输出序列中,直到发生以下情况之一:
- 恰好
count
插入了字符- 插入输出序列失败(在这种情况下
setstate(badbit)
被调用)
所以我知道它将缓冲区中的一大块字符写入流中。字符数是 指定的字节数count
。但有几件事我不确定。这些是我的问题:
我应该
write
只在我想指定要写入流的字节数时使用吗?因为通常当您打印一个char
数组时,它会打印整个数组,直到它到达空字节,但是当您使用时,write
您可以指定要写入多少个字符。char greeting[] = "Hello World"; std::cout << greeting; // prints the entire string std::cout.write(greeting, 5); // prints "Hello"
但也许我对这个有误解。
我经常在使用的代码示例中看到这一点
write
:stream.write(reinterpret_cast<char*>(buffer), sizeof(buffer));
为什么
reinterpret_cast
要char*
使用?在写入流时,我什么时候应该知道做这样的事情?
如果有人可以帮助我解决这两个问题,将不胜感激。