← Más ejemplos de código: Java, Python, C#, PHP, C, C++…
C++ es el lenguaje de los motores de videojuegos como Unreal, de los navegadores Chrome y Firefox, de buena parte de Windows y macOS, de las bases de datos y del software financiero y científico que necesita exprimir el hardware. Aquí tienes un curso desde cero con C++23 y GCC 15, una guía de los fallos de seguridad que más se repiten y de cómo detectarlos, las versiones y parches que hay que conocer, sus rarezas, un test y ejemplos para tareas concretas. Todo el código se compiló y se ejecutó antes de publicarse.
Curso · 8 leccionesAprende C++ desde cero, en españolDel primerg++ hola.cpp a un proyecto con CMake: tipos, control y funciones, contenedores y algoritmos, clases y RAII, punteros inteligentes y movimiento, plantillas, herencia y excepciones. Con esquemas, retos y el aviso real del compilador o del sanitizador en cada error.Ir al curso →Seguridad: lo que no puede faltar
C++ hereda de C el acceso directo a la memoria, y con él muchos de sus fallos, aunque sus contenedores, sus punteros inteligentes y RAII evitan la mayoría si se usan bien. Casi todos los errores se repiten, y casi todos los detectan herramientas gratuitas que vienen con GCC y Clang. Cada lección del curso tiene su recuadro «Ojo con la seguridad», y estas dos páginas lo reúnen todo.
SeguridadLos fallos de seguridad típicos de C++ y cómo evitarlosDesbordamientos, iteradores invalidados, uso tras liberar o mover, referencias colgantes, enteros que se desbordan, carreras de datos e inyección de órdenes: cada uno con cómo lo detectan el compilador, los sanitizadores y la biblioteca endurecida, y la forma segura.Ver los fallos → Versiones y parchesDe C++98 a C++26, y cómo mantener C++ al díaQué trajo cada estándar, qué soporta tu compilador, las opciones que endurecen un ejecutable y el debate sobre la seguridad de memoria.Ver las versiones →Practica y ponte a prueba
RarezasComportamiento indefinido y otras sorpresas de C++La declaración que parece una variable,vector<bool>, llaves frente a paréntesis, el map que inserta al leer y un std::move que no mueve nada.Ver las rarezas → Test · 24 preguntas¿Qué imprime este código?24 preguntas sobre el curso, con fragmentos de C++: decide qué escriben. Con la nota, los aciertos por lección y la salida real de GCC 15 en cada respuesta.Hacer el test →Los ejemplos son programas de un solo archivo que se compilan con g++ -std=c++23 -Wall -Wextra programa.cpp -o programa. Usan C++23, así que hace falta GCC 14 o más nuevo (o Clang 19 con libstdc++ 14); funcionan en Linux, macOS y Windows.
Archivos y texto
- Leer un archivo de textoLínea a línea con getline, entero de una vez, palabra a palabra y cómo saber si falló.
- Crear y escribir un archivo de textoofstream, añadir al final, comprobar errores y escribir de forma segura con un archivo temporal.
- Renombrar y mover archivosstd::filesystem::rename, mover entre carpetas, sobrescribir y los errores con error_code.
- Leer y escribir CSVUn lector que respeta las comillas y las comas de los campos, y cómo escribir CSV válido.
Datos y algoritmos
- Cadenas: trim, split y formatQuitar espacios, dividir sin perder campos vacíos, unir, convertir números y std::format.
- Fechas y horas con chronosystem_clock, formatear fechas, sumar días, duraciones y medir tiempos.
- Ordenar y buscarsort con comparadores y proyecciones, ordenar estructuras, lower_bound y binary_search.
- Contar palabrasLeer un texto, normalizarlo y contar con map y unordered_map; las más frecuentes.
El sistema: aleatorios, argumentos, archivos e hilos
- Números aleatoriosmt19937, distribuciones, semillas, mezclar y por qué no sirven para secretos.
- Argumentos de la línea de órdenesargc y argv, un analizador de opciones pequeño, –help y los códigos de salida.
- El sistema de archivosstd::filesystem: recorrer carpetas, tamaños, crear, borrar y manejar errores.
- Hilos y concurrenciajthread, mutex, async y atómicos, y una carrera de datos que detecta ThreadSanitizer.
Todo el código se compiló con GCC 15.3 (C++23, -std=c++23 -Wall -Wextra) y glibc 2.41 en un contenedor limpio antes de publicarse; las salidas, los avisos del compilador y los informes de los sanitizadores que aparecen están copiados de esa ejecución. ¿Buscas C? Está en C en español.
