0Pricing
C++ Academy · Lección

Por qué usar string_view

Evite copiar cadenas

Por qué usar string_view es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.

El coste de las copias

Pasar std::string por valor copia todo el búfer. Para acceder a los datos en modo de solo lectura, esa copia es trabajo innecesario. std::string_view es una vista ligera que no es propietaria de los datos: solo contiene un puntero y una longitud. Incluya <string_view>.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "hello";
    std::cout << sv << " len=" << sv.size() << "\n";
}

Qué contiene una vista

Un string_view solo almacena un puntero a caracteres existentes y una longitud. No es propietario de los datos ni los copia.

#include <iostream>
#include <string>
#include <string_view>
int main() {
    std::string s = "world";
    std::string_view sv = s; // views s, no copy
    std::cout << sv << "\n";
}

Parámetros de solo lectura

Aceptar std::string_view permite que su función trabaje con std::string, literales de cadena y arrays de caracteres, sin copiar ninguno de ellos.

#include <iostream>
#include <string_view>
void greet(std::string_view name) {
    std::cout << "Hi, " << name << "\n";
}
int main() {
    greet("Ada");
    greet(std::string("Bob"));
}

Sin asignaciones

Crear una vista nunca reserva memoria, por lo que copiarla y pasarla por valor resulta económico.

#include <iostream>
#include <string_view>
int main() {
    std::string_view a = "constant text";
    std::string_view b = a; // trivial copy
    std::cout << (a == b) << "\n";
}

Subcadenas económicas

substr sobre una vista devuelve otra vista del mismo bloque de memoria; no se copia ningún carácter.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "abcdef";
    std::cout << sv.substr(2, 3) << "\n"; // cde
}

Comparación orientada al rendimiento

En las funciones que solo inspeccionan texto, string_view evita tanto la asignación en el heap como las copias, algo importante en bucles críticos y durante el análisis.

Longitud e indexación

Una vista admite la interfaz habitual: size(), empty(), indexación e iteración basada en rangos.

#include <iostream>
#include <string_view>
int main() {
    std::string_view sv = "C++";
    for (char c : sv) std::cout << c << "-";
    std::cout << "\n" << sv.size() << "\n";
}

Las vistas son de solo lectura

No puede modificar caracteres mediante un string_view; solo proporciona acceso de lectura. Para modificar el texto, necesita la cadena propietaria.

Del literal a la vista

Los literales de cadena se convierten directamente en vistas, por lo que pasar texto constante resulta extremadamente económico.

#include <iostream>
#include <string_view>
using namespace std::string_view_literals;
int main() {
    auto sv = "literal"sv;
    std::cout << sv.size() << "\n";
}

No es un reemplazo de string

Use std::string cuando necesite ser propietario del texto, almacenarlo o modificarlo. Use std::string_view para parámetros temporales de solo lectura.

Advertencia sobre el tiempo de vida

Como una vista no es propietaria de sus datos, los caracteres subyacentes deben durar más que la vista. Usarla incorrectamente provoca vistas colgantes, un tema que se tratará en una lección posterior.

Comprobación rápida

Compruebe su comprensión del motivo de existencia de string_view.

Resumen

Ha aprendido por qué existe string_view:

  • Es una vista no propietaria formada por un puntero y una longitud.
  • Aceptarla evita copias y asignaciones para el texto de solo lectura.
  • Funciona con cadenas, literales y arrays de caracteres.
  • Los datos vistos deben durar más que la vista.

Preguntas frecuentes

¿La lección «Por qué usar string_view» es gratis?

Sí — el texto completo de «Por qué usar string_view» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Por qué usar string_view»?

Evite copiar cadenas Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C++ Academy?

No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Por qué usar string_view»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C++ Academy?

Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Por qué usar string_view
  2. Creación de vistas
  3. Errores y tiempos de vida
  4. Algoritmos de cadenas
← Volver a C++ Academy