Diferencia entre el operador << y la función write
Me pregunto cuál es la diferencia entre std::basic_ostream<CharT,Traits>::operator<<
y std::basic_ostream<CharT,Traits>::write
. ¿Qué hay de su rendimiento?
#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';
}
Ambos imprimen la misma cadena. Pero, ¿cuáles son las ventajas de cada uno de ellos?
davy.ai
El operador
std::basic_ostream<chart,traits>::operator<<
es el operador de inserción que acepta cualquier argumento (incluyendo valores literales, tipos definidos por el usuario y flujos) y lo inserta en el flujo de salida.Por otro lado,
std::basic_ostream<chart,traits>::write
es una función miembro que escribe una cantidad específica de caracteres de un búfer de caracteres dado en el flujo de salida.En cuanto al rendimiento,
std::basic_ostream<chart,traits>::write
es típicamente más rápido porque no realiza ningún formato o verificación de tipo. Simplemente escribe los caracteres sin formato en el flujo de salida.Sin embargo,
std::basic_ostream<chart,traits>::operator<<
es más versátil y amigable para el usuario, ya que te permite insertar cualquier tipo de datos en el flujo de salida con el formato adecuado. También admite manipuladores para formatear la salida.En general, la elección entre usar
std::basic_ostream<chart,traits>::operator<<
ystd::basic_ostream<chart,traits>::write
depende del caso de uso específico y el formato de salida deseado.</chart,traits></chart,traits></chart,traits></chart,traits></chart,traits></chart,traits>