带和不带 (void*) 的 COUT 输入流
cout input stream with and without (void*)
我有一个输入流IPCimstream,它使用dataBuf((函数返回指向其流的字符缓冲区的指针。
说我有
IPCimstream ims;
打印
有什么区别1.
cout << ims.dataBuf() << endl;
和
阿拉伯数字。
cout << (void*)ims.dataBuf() << endl;
如果可能,请用一个例子解释。假设ims.dataBuf((有"Hello world"等,或者你觉得可以很好地解释差异的其他例子。抱歉,我是输入流的新手,如果有的话,我无法想出更有趣的例子。
另外,如果IPCimstream是字符流与二进制流,那会有什么区别。谢谢。
不同之处在于cout::operator<<
的重载char*
指针被视为以零结尾的 C 字符串(好吧,C 字符串无论如何都只是字符指针(,因此它输出字符串本身。如果你的缓冲区不是以零结尾的字符串,cout
的猜测是错误的,所以它会输出一些随机垃圾,直到第一个