es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rendimiento de string_view Vs const char*

¿Es mejor usar un parámetro std::string_view en lugar de const char* en el código siguiente?

void func( const std::string_view str )
{
    std::istringstream iss( str.data( ) ); // str se pasa al constructor de istringstream

<pre><code>std::size_t pos { };
int num { std::stoi( str.data( ), &pos, 10 ) }; // y aquí se pasa a std::stoi
</code></pre>

<p>}</p>

<p>int main()
{
    std::array<char, 20> buffer { };
    std::cin.getline( buffer.data( ), 20 );
    func( buffer.data( ) );
}

Tanto el constructor de std::istringstream como std::stoi requieren un parámetro de tipo const std::string&. Pero se les pasa un objeto std::string_view usando su función miembro data(). ¿Es esto una mala práctica? ¿Debo volver a utilizar const char*?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Usar un parámetro std::string_view es mejor que uno const char* en este código. std::string_view es una vista ligera y no propietaria de una cadena de caracteres. Proporciona una forma más segura y flexible de manejar cadenas de caracteres porque puede aceptar cualquier objeto similar a una cadena que proporcione un puntero a sus datos y su longitud. También evita la necesidad de crear un objeto temporal de cadena cuando se pasa una cadena de caracteres literal o un const char* a una función, lo que puede ser más eficiente. Por lo tanto, usar std::string_view puede mejorar el rendimiento y la mantenibilidad del código.

Comments are closed.