我正在阅读对象的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*使用?在写入流时,我什么时候应该知道做这样的事情?
如果有人可以帮助我解决这两个问题,将不胜感激。