C++ online - IDE, editor, compilador, intérprete

Compila y ejecuta código C++20 online con Clang funcionando en tu navegador: contenedores de la STL, algoritmos, iostream y entrada por stdin. Sin registro y sin subir nada.

C++20 (Clang 21, WebAssembly) · Se ejecuta en tu navegador, así que tu código nunca llega a nuestros servidores.
main.cppC++
Salida

            
Entrada (stdin), leída por scanf / std::cin / getline
Ctrl/⌘ + Enter para ejecutar

Funciones del compilador de C++ online (IDE, editor & intérprete)

Escribe, ejecuta y prueba código C++ online y gratis. Esta página funciona como IDE, editor de código, compilador e intérprete de C++ online, todo en uno: escribe tu código, pulsa Ejecutar y verás el resultado al momento. Todo se ejecuta en tu navegador, sin nada que instalar ni cuentas que crear.

  • Ejecuta código al instante: C++20 (Clang 21, WebAssembly), con resultados en menos de un segundo tras la primera carga.
  • Editor de código: resaltado de sintaxis, números de línea, emparejamiento de corchetes y cierre automático de corchetes.
  • Entrada del programa (stdin): escribe la entrada que lee tu programa antes de ejecutarlo.
  • Errores claros: los mensajes de error y las advertencias aparecen en el panel de salida, igual que en tu propio ordenador.
  • Pantalla completa: Ctrl/⌘ + Shift + F, tamaño de fuente ajustable, diseño en paralelo o apilado y paneles redimensionables.
  • Guardado automático: tu código se guarda en tu navegador; descárgalo como main.cpp o cópialo con un clic.
  • Experimenta sin riesgo: un límite de tiempo y un botón Detener acaban con los bucles infinitos.
  • Privado: el entorno de ejecución de C++ funciona en tu dispositivo, así que tu código nunca se sube.
  • Modo oscuro y atajos de teclado: Ctrl/⌘ + Enter ejecuta el código.
  • Gratis: sin registro y sin límites de uso.

Aprende otros lenguajes de programación

Cómo usar el compilador de C++ online

  1. Escribe o pega tu código C++ en el editor. Necesita un int main(). Restablecer ejemplo recupera el programa inicial.
  2. Si tu programa lee de std::cin o std::getline, escribe antes la entrada en la casilla Entrada (stdin).
  3. Pulsa Ejecutar, o Ctrl + Enter (⌘ + Enter en un Mac). La página compila main.cpp, muestra los diagnósticos que haya y luego ejecuta el programa.
  4. Elige un Límite de tiempo de 5, 15 o 60 segundos. Si una ejecución lo supera, el programa se detiene. Detener lo para al instante.

En la primera ejecución, la página descarga la cadena de herramientas Clang, de unos 30 MB, que tu navegador guarda después en caché. A partir de ahí, compilar un programa normal tarda bastante menos de un segundo. Copiar y main.cpp te permiten guardar tu código, A−/A+ cambian el tamaño del texto, el botón de diseño alterna entre paneles uno al lado del otro y apilados, y Pantalla completa (Ctrl/⌘ + Shift + F, Esc para salir) da al editor toda la ventana.

No se sube nada. Tanto el compilador como tu programa se ejecutan en tu navegador, y tu último código solo se guarda en el almacenamiento local de tu navegador.

Qué es compatible

La página usa un compilador Clang/LLVM 21 auténtico, compilado para WebAssembly por el proyecto YoWASP. Compila tu código fuente en un programa WebAssembly (WASI) que ejecuta el navegador. El comando que ejecuta equivale a:

clang++ main.cpp -std=c++20 -O2 -Wall -fno-exceptions -o main.wasm
  • C++20: auto, lambdas, for basado en rangos, enlaces estructurados (structured bindings), constexpr, conceptos e inicializadores designados.
  • La biblioteca estándar de libc++: vector, string, map, unordered_map, set, algorithm, numeric, iostream, sstream, iomanip, optional y el resto de contenedores y algoritmos.
  • Los diagnósticos propios de Clang, mostrados tal como los da el compilador con main.cpp:line:column (línea:columna), incluidos los errores de plantillas y las advertencias de -Wall.
  • Si main devuelve un valor distinto de cero, se indica como El proceso terminó con el código N.

Por qué las excepciones están desactivadas

Las excepciones de C++ necesitan en WebAssembly un soporte extra en tiempo de ejecución que esta cadena de herramientas para el navegador no ofrece, así que el código se compila con -fno-exceptions. Por eso, try, throw y catch no son compatibles, y el código que los usa no compila. Las funciones de la biblioteca que normalmente lanzarían una excepción, como std::stoi con una entrada incorrecta o .at() con un índice fuera de rango, tampoco se pueden capturar aquí. Comprueba la entrada antes de convertirla, compara los índices con size() o devuelve un std::optional para indicar un fallo:

#include <optional>
#include <string>

std::optional<int> parse(const std::string& s) {
    if (s.empty()) return std::nullopt;
    int v = 0;
    for (char c : s) {
        if (c < '0' || c > '9') return std::nullopt;
        v = v * 10 + (c - '0');
    }
    return v;
}

Otras limitaciones

  • Sin hilos: std::thread, std::async y pthreads no están disponibles.
  • Sin red, sin fork/exec y sin un sistema de archivos real, así que std::ifstream no puede leer archivos de tu ordenador. Usa stdin en su lugar.
  • Sin bibliotecas gráficas ni de interfaz como Qt, SFML u OpenGL. La salida es solo texto.
  • No hay bibliotecas de terceros instaladas, como Boost. Todo tiene que estar en un único archivo main.cpp.

C++ moderno en unas pocas líneas

El programa inicial muestra las expresiones idiomáticas que hacen que el C++ moderno sea más corto que el código de los libros de texto antiguos:

std::map<std::string, int> ages{ {"Ada", 36}, {"Linus", 54} };
for (const auto& [name, age] : ages)      // structured bindings
    std::cout << name << " is " << age << '\n';

std::vector<int> v{5, 3, 9, 1};
std::sort(v.begin(), v.end(), std::greater<>());
auto evens = std::count_if(v.begin(), v.end(), [](int x) { return x % 2 == 0; });
  • En los bucles, usa '\n' en lugar de std::endl. endl además vacía el flujo, lo que es más lento.
  • Si combinas std::cin >> n con std::getline, llama antes a std::cin.ignore(); si no, getline lee el resto de la línea anterior como una cadena vacía.
  • operator[] en un std::map inserta un valor por defecto cuando falta la clave. Usa find o contains (C++20) para buscar una clave sin modificar el mapa.

Preguntas frecuentes

¿Qué estándar de C++ se usa?

C++20, compilado con Clang 21 y -O2 -Wall. El código escrito para C++11, C++14 o C++17 también compila.

¿Por qué no compila mi código con try/catch?

Las excepciones están desactivadas con -fno-exceptions. Sustitúyelas por valores de retorno, std::optional o comprobaciones explícitas antes de la operación arriesgada.

¿Puedo usar bits/stdc++.h?

No. Esa cabecera es específica de GCC y no existe en libc++. Incluye las cabeceras estándar que necesites, como <iostream>, <vector> y <algorithm>.

¿Hay una versión para C?

Sí, el compilador de C online usa el mismo Clang en modo C17. También puedes ver todos los compiladores online del sitio.

Actualizado

Copiado al portapapeles