C++ online - IDE, editor, compilador, interpretador

RSS

Compile e execute código C++20 online com Clang rodando no seu navegador: contêineres e algoritmos da STL, iostream e entrada stdin. Sem cadastro, nada é enviado.

C++20 (Clang 21, WebAssembly) · Roda no seu navegador, então seu código nunca chega aos nossos servidores.
main.cppC++
Saída

            
Entrada (stdin), lida por scanf / std::cin / getline
Ctrl/⌘ + Enter para executar

Recursos do compilador C++ online (IDE, editor & interpretador)

Escreva, execute e teste código C++ online de graça. Esta página funciona como IDE, editor de código, compilador e interpretador C++ online, tudo em um: digite seu código, clique em Executar e veja a saída na hora. Tudo roda no seu navegador, sem nada para instalar e sem conta para criar.

  • Execute código na hora: C++20 (Clang 21, WebAssembly), com saída em menos de um segundo após o primeiro carregamento.
  • Editor de código: realce de sintaxe, números de linha, correspondência de colchetes e fechamento automático de colchetes.
  • Entrada do programa (stdin): digite a entrada que seu programa lê antes de executá-lo.
  • Erros claros: mensagens de erro e avisos aparecem no painel de saída, como apareceriam no seu próprio computador.
  • Tela cheia: Ctrl/⌘ + Shift + F, tamanho de fonte ajustável, layout lado a lado ou empilhado e painéis redimensionáveis.
  • Salvamento automático: seu código fica guardado no seu navegador; baixe-o como main.cpp ou copie-o com um clique.
  • Seguro para experimentar: um limite de tempo e um botão Parar encerram loops infinitos.
  • Privado: o runtime C++ roda no seu dispositivo, então seu código nunca é enviado.
  • Modo escuro e atalhos de teclado: Ctrl/⌘ + Enter executa o código.
  • Grátis: sem cadastro, sem limites de uso.

Aprenda outras linguagens de programação

Como usar o compilador C++ online

  1. Digite ou cole o seu código C++ no editor. Ele precisa de um int main(). Restaurar exemplo traz de volta o programa inicial.
  2. Se o seu programa lê dados de std::cin ou std::getline, coloque a entrada na caixa Entrada (stdin) antes.
  3. Clique em Executar ou pressione Ctrl + Enter (⌘ + Enter no Mac). A página compila o main.cpp, mostra os diagnósticos, se houver, e depois executa o programa.
  4. Escolha um limite de tempo de 5, 15 ou 60 segundos. Quando uma execução passa desse limite, o programa é interrompido. Parar encerra a execução na hora.

Na primeira execução, a página baixa o conjunto de ferramentas Clang, com cerca de 30 MB, que o seu navegador guarda em cache. Depois disso, compilar um programa típico leva bem menos de um segundo. Copiar e main.cpp permitem guardar o seu código, A−/A+ mudam o tamanho do texto, o botão de layout alterna entre painéis lado a lado e empilhados, e Tela cheia (Ctrl/⌘ + Shift + F, Esc para sair) dá ao editor a janela inteira.

Nada é enviado. O compilador e o seu programa rodam no seu navegador, e o seu código mais recente fica salvo apenas no armazenamento local do navegador.

O que é suportado

A página usa um compilador Clang/LLVM 21 de verdade, compilado para WebAssembly pelo projeto YoWASP. Ele compila o seu código-fonte num programa WebAssembly (WASI) que o navegador executa. O comando que ele executa equivale a:

clang++ main.cpp -std=c++20 -O2 -Wall -fno-exceptions -o main.wasm
  • C++20: auto, lambdas, for baseado em intervalo, structured bindings, constexpr, concepts e inicializadores designados.
  • A biblioteca padrão da libc++: vector, string, map, unordered_map, set, algorithm, numeric, iostream, sstream, iomanip, optional e o restante dos contêineres e algoritmos.
  • Os próprios diagnósticos do Clang, exibidos exatamente como o compilador os informa, com main.cpp:line:column, incluindo erros de template e avisos do -Wall.
  • Um retorno diferente de zero em main é informado como O processo terminou com o código N.

Por que as exceções estão desativadas

As exceções do C++ precisam de suporte extra em tempo de execução no WebAssembly, e esse conjunto de ferramentas no navegador não oferece isso; por isso, o código é compilado com -fno-exceptions. Como resultado, try, throw e catch não são suportados, e um código que os usa não compila. Funções da biblioteca que normalmente lançariam exceções, como std::stoi com uma entrada inválida ou .at() com um índice fora do intervalo, também não podem ser capturadas aqui. Verifique a entrada antes de convertê-la, compare os índices com size() ou retorne um std::optional para sinalizar uma falha:

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

Outras limitações

  • Sem threads: std::thread, std::async e pthreads não estão disponíveis.
  • Sem rede, sem fork/exec e sem sistema de arquivos real; assim, std::ifstream não consegue ler arquivos do seu computador. Use a entrada padrão (stdin) em vez disso.
  • Sem bibliotecas gráficas ou de interface como Qt, SFML ou OpenGL. A saída é apenas texto.
  • Bibliotecas de terceiros como a Boost não estão instaladas. Tudo precisa estar no arquivo único main.cpp.

C++ moderno em poucas linhas

O programa inicial mostra as construções que deixam o C++ moderno mais curto do que o código dos livros antigos:

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; });
  • Prefira '\n' a std::endl em loops. O endl também descarrega o fluxo, o que é mais lento.
  • Ao misturar std::cin >> n com std::getline, chame std::cin.ignore() antes; caso contrário, o getline lê o resto da linha anterior como uma string vazia.
  • O operator[] de um std::map insere um valor padrão quando a chave não existe. Use find ou contains (C++20) para procurar uma chave sem alterar o map.

Perguntas frequentes

Qual padrão do C++ é usado?

C++20, compilado pelo Clang 21 com -O2 -Wall. Códigos escritos para C++11, C++14 ou C++17 também compilam.

Por que o meu código com try/catch não compila?

As exceções estão desativadas com -fno-exceptions. Substitua-as por valores de retorno, std::optional ou verificações explícitas antes da operação arriscada.

Posso usar bits/stdc++.h?

Não. Esse cabeçalho é específico do GCC e não existe na libc++. Inclua os cabeçalhos padrão de que você precisa, como <iostream>, <vector> e <algorithm>.

Existe uma versão para C puro?

Sim, o compilador C online usa o mesmo Clang no modo C17. Você também pode ver todos os compiladores online do site.

Atualizado

Copiado para a área de transferência