std::string frente a arrays de caracteres de estilo C
Compare std::string, moderno, con los arrays de caracteres terminados en nulo heredados y decida cuándo utilizar cada uno.
std::string frente a arrays de caracteres de estilo C 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.
Dos formas de almacenar texto
C++ hereda las cadenas de estilo C — matrices de char terminadas en nulo — y añade std::string de la biblioteca estándar. Use casi siempre std::string.
Cadenas de estilo C
Una cadena de estilo C es una secuencia de elementos char que termina con un byte nulo '\0'. Las funciones como strlen recorren la matriz hasta encontrar el nulo.
const char* greeting = "Hello";
// Memory: H, e, l, l, o, \0 (6 bytes)
#include <cstring>
std::cout << std::strlen(greeting); // 5std::string
std::string administra su propia memoria y crece según sea necesario. Constrúyalo como cualquier otro tipo.
#include <string>
std::string name = "Ada";
name += " Lovelace";
std::cout << name; // Ada LovelaceTamaño y longitud
std::string::size() y length() son sinónimos y devuelven el número de caracteres (sin incluir el terminador nulo).
std::string s = "hello";
std::cout << s.size(); // 5
std::cout << s.length(); // 5Acceso mediante índices
Lea o escriba caracteres con [] o at(). A diferencia de [], at() lanza una excepción si el índice está fuera de rango.
std::string s = "cat";
char first = s[0]; // 'c'
char last = s.at(2); // 't'
// s.at(10) throws std::out_of_rangeCadenas vacías
Use empty() en lugar de size() == 0. Es más claro e igual de rápido.
Cuándo usar const char*
Use una cadena de estilo C cuando:
- Interactúe con bibliotecas de C o API del sistema operativo
- Trabaje con literales de cadena que nunca cambian
- Trabaje con sistemas integrados en los que la biblioteca estándar no esté disponible
Convertir entre ambas
Obtenga una cadena de C a partir de un std::string con .c_str(). Construya directamente un std::string a partir de un const char*.
std::string s = "Hello";
const char* c = s.c_str();
const char* literal = "world";
std::string s2(literal);Los literales de cadena son const char[]
Un literal de cadena como "hi" tiene el tipo const char[3] (incluido el terminador nulo). Se encuentra en memoria de solo lectura.
Literales de cadena sin formato
Use el prefijo R"(...)" para omitir el procesamiento de secuencias de escape. Es útil para patrones de expresiones regulares y rutas de archivos.
std::string regex = R"(\d+\.\d{2})";
std::string path = R"(C:\Users\Ada)";Iterar sobre un std::string
Las cadenas son contenedores. Puede iterar sobre ellas con un bucle for basado en rangos, índices o iteradores.
std::string s = "abc";
for (char c : s) std::cout << c << " "; // a b cComprobación rápida
¿Qué método de std::string lanza una excepción cuando el índice está fuera de rango?
Repaso
Prefiera std::string para gestionar texto. Use const char* para literales y para interoperar con API de C. Convierta entre ambos mediante .c_str() y la construcción directa.
Preguntas frecuentes
¿La lección «std::string frente a arrays de caracteres de estilo C» es gratis?
Sí — el texto completo de «std::string frente a arrays de caracteres de estilo C» 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 «std::string frente a arrays de caracteres de estilo C»?
Compare std::string, moderno, con los arrays de caracteres terminados en nulo heredados y decida cuándo utilizar cada uno. 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 «std::string frente a arrays de caracteres de estilo C»?
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
- std::string frente a arrays de caracteres de estilo C
- Operaciones con strings: concat, substr, find y replace
- stringstream para analizar strings
- Conversiones de strings: to_string y stoi