operator<< 和 write 函数之间的区别?

Difference between operator<< and write function?

我想知道std::basic_ostream<CharT,Traits>::operator<<std::basic_ostream<CharT,Traits>::write有什么区别。性能怎么样?

#include <iostream>
#include <string>

int main()
{
    std::string tempMsg;
    tempMsg.reserve( 100 );
    tempMsg += "This is a string";

    std::cout.write( tempMsg.data( ), tempMsg.size( ) ).write( "\n", 1 );
    std::cout << tempMsg << '\n';
}

它们都打印相同的字符串。但是它们各自的优点是什么?

该函数允许为一个字符数组指定要输出的字符数。

例如你有声明

const char *s = "Hello World!";

并且只想从字符串文字中输出单词“Hello”那么你可以写

std::cout.write( s, 5 );

如果你会写

std::cout << s;

然后输出整个字符串文字。

因此使用该函数您可以输出字符数组的任何部分,例如

std::cout. write( s + 6, 2 ) << 'w' << s + 11 << '\n';

至于性能则没有差异或差异微不足道。重要的是功能。