【发布时间】:2013-06-09 07:08:23
【问题描述】:
我正在阅读 basic_ostream 对象的 write 方法,这是我在 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*?在写入流时,我什么时候应该知道做这样的事情?
如果有人能帮助我解决这两个问题,将不胜感激。
【问题讨论】: