C++ online - IDE, editor, compilatore, interprete

RSS

Compila ed esegui codice C++20 online con Clang nel tuo browser: container e algoritmi della STL, iostream e input da stdin. Senza registrazione, nulla viene caricato.

C++20 (Clang 21, WebAssembly) · Funziona nel tuo browser, quindi il tuo codice non raggiunge mai i nostri server.
main.cppC++
Output

            
Input (stdin), letto da scanf / std::cin / getline
Ctrl/⌘ + Enter per eseguire

Funzionalità del compilatore C++ online (IDE, editor e interprete)

Scrivi, esegui e testa codice C++ online gratis. Questa pagina è al tempo stesso IDE C++ online, editor di codice, compilatore e interprete: scrivi il codice, premi Esegui e vedi subito l'output. Tutto funziona nel tuo browser, senza nulla da installare e senza creare un account.

  • Esecuzione immediata: C++20 (Clang 21, WebAssembly), con output in meno di un secondo dopo il primo caricamento.
  • Editor di codice: evidenziazione della sintassi, numeri di riga, corrispondenza e chiusura automatica delle parentesi.
  • Input del programma (stdin): digita l'input che il programma legge prima di eseguirlo.
  • Errori chiari: messaggi di errore e avvisi compaiono nel pannello di output, come sul tuo computer.
  • Schermo intero: Ctrl/⌘ + Shift + F, dimensione del carattere regolabile, layout affiancato o impilato e pannelli ridimensionabili.
  • Salvataggio automatico: il tuo codice resta nel browser; scaricalo come main.cpp o copialo con un clic.
  • Sperimenta in sicurezza: un limite di tempo e un pulsante Interrompi fermano i cicli infiniti.
  • Privato: il runtime C++ funziona sul tuo dispositivo, quindi il codice non viene mai caricato.
  • Modalità scura e scorciatoie da tastiera: Ctrl/⌘ + Enter esegue il codice.
  • Gratis: nessuna registrazione, nessun limite di utilizzo.

Impara altri linguaggi di programmazione

Come usare il compilatore C++ online

  1. Scrivi o incolla il tuo codice C++ nell'editor. Serve una funzione int main(). Ripristina esempio riporta il programma iniziale.
  2. Se il tuo programma legge da std::cin o std::getline, inserisci prima l'input nel campo Input (stdin).
  3. Premi Esegui, oppure Ctrl + Invio (⌘ + Invio su Mac). La pagina compila main.cpp, mostra eventuali messaggi diagnostici e poi esegue il programma.
  4. Scegli un limite di tempo di 5, 15 o 60 secondi. Quando un'esecuzione lo supera, il programma viene fermato. Interrompi lo termina subito.

Alla prima esecuzione la pagina scarica la toolchain Clang, circa 30 MB, che poi il browser mette in cache. In seguito, compilare un programma tipico richiede molto meno di un secondo. Copia e main.cpp ti permettono di conservare il codice, A−/A+ ridimensionano il testo, il pulsante del layout alterna tra pannelli affiancati e impilati e Schermo intero (Ctrl/⌘ + Maiusc + F, Esc per uscire) dà all'editor tutta la finestra.

Non viene caricato nulla. Sia il compilatore sia il tuo programma vengono eseguiti nel tuo browser e il tuo codice più recente viene salvato solo nella memoria locale del browser.

Cosa è supportato

La pagina usa un vero compilatore Clang/LLVM 21, compilato per WebAssembly dal progetto YoWASP. Compila il tuo sorgente in un programma WebAssembly (WASI) che il browser esegue. Il comando che lancia equivale a:

clang++ main.cpp -std=c++20 -O2 -Wall -fno-exceptions -o main.wasm
  • C++20: auto, lambda, for basati su intervalli, structured binding, constexpr, concept e inizializzatori designati.
  • La libreria standard di libc++: vector, string, map, unordered_map, set, algorithm, numeric, iostream, sstream, iomanip, optional e il resto dei contenitori e degli algoritmi.
  • I messaggi diagnostici di Clang, stampati esattamente come li riporta il compilatore con main.cpp:line:column, compresi gli errori dei template e gli avvisi di -Wall.
  • Un valore di ritorno diverso da zero da main viene segnalato come Processo terminato con codice N.

Perché le eccezioni sono disattivate

Le eccezioni C++ richiedono in WebAssembly un supporto runtime aggiuntivo che questa toolchain nel browser non offre, quindi il codice viene compilato con -fno-exceptions. Di conseguenza try, throw e catch non sono supportati e il codice che li usa non viene compilato. Nemmeno le funzioni di libreria che normalmente lancerebbero un'eccezione, come std::stoi con un input non valido o .at() con un indice fuori intervallo, possono essere intercettate qui. Controlla l'input prima di convertirlo, verifica gli indici rispetto a size() oppure restituisci un std::optional per segnalare un errore:

#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;
}

Altri limiti

  • Niente thread: std::thread, std::async e pthreads non sono disponibili.
  • Niente rete, niente fork/exec e nessun vero file system, quindi std::ifstream non può leggere file dal tuo computer. Usa invece lo stdin.
  • Nessuna libreria grafica o GUI come Qt, SFML o OpenGL. L'output è solo testo.
  • Le librerie di terze parti come Boost non sono installate. Tutto deve stare nell'unico file main.cpp.

Il C++ moderno in poche righe

Il programma iniziale mostra gli idiomi che rendono il C++ moderno più conciso del codice dei vecchi manuali:

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; });
  • Nei cicli preferisci '\n' a std::endl. endl svuota anche il buffer dello stream, il che è più lento.
  • Quando combini std::cin >> n con std::getline, chiama prima std::cin.ignore(), altrimenti getline legge il resto della riga precedente come stringa vuota.
  • operator[] su una std::map inserisce un valore predefinito quando la chiave manca. Usa find o contains (C++20) per cercare una chiave senza modificare la mappa.

Domande frequenti

Quale standard C++ viene usato?

C++20, compilato da Clang 21 con -O2 -Wall. Anche il codice scritto per C++11, C++14 o C++17 viene compilato.

Perché il mio codice con try/catch non viene compilato?

Le eccezioni sono disattivate con -fno-exceptions. Sostituiscile con valori di ritorno, std::optional o controlli espliciti prima dell'operazione a rischio.

Posso usare bits/stdc++.h?

No. Quell'header è specifico di GCC e non esiste in libc++. Includi gli header standard che ti servono, come <iostream>, <vector> e <algorithm>.

Esiste una versione per il C puro?

Sì, il compilatore C online usa lo stesso Clang in modalità C17. Puoi anche consultare tutti i compilatori online del sito.

Aggiornato

Copiato negli appunti