C++ en ligne - IDE, éditeur, compilateur, interpréteur

RSS

Compilez et exécutez du code C++20 en ligne avec Clang dans votre navigateur : conteneurs et algorithmes de la STL, iostream et entrée stdin. Sans inscription, rien n'est envoyé.

C++20 (Clang 21, WebAssembly) · S'exécute dans votre navigateur : votre code n'atteint jamais nos serveurs.
main.cppC++
Sortie

            
Entrée (stdin), lue par scanf / std::cin / getline
Ctrl/⌘ + Enter pour exécuter

Fonctionnalités du compilateur C++ en ligne (IDE, éditeur & interpréteur)

Écrivez, exécutez et testez du code C++ en ligne gratuitement. Cette page réunit un IDE C++ en ligne, un éditeur de code, un compilateur et un interpréteur : saisissez votre code, cliquez sur Exécuter et voyez le résultat immédiatement. Tout s'exécute dans votre navigateur, sans rien à installer ni compte à créer.

  • Exécution instantanée : C++20 (Clang 21, WebAssembly), avec un résultat en moins d'une seconde après le premier chargement.
  • Éditeur de code : coloration syntaxique, numéros de ligne, correspondance et fermeture automatique des parenthèses.
  • Entrée du programme (stdin) : saisissez les données lues par votre programme avant de l'exécuter.
  • Erreurs claires : les messages d'erreur et avertissements s'affichent dans le panneau de sortie, comme sur votre propre ordinateur.
  • Plein écran : Ctrl/⌘ + Shift + F, taille de police réglable, disposition côte à côte ou empilée et panneaux redimensionnables.
  • Enregistrement automatique : votre code est conservé dans votre navigateur ; téléchargez-le sous main.cpp ou copiez-le en un clic.
  • Expérimentez sans risque : une limite de temps et un bouton Arrêter interrompent les boucles infinies.
  • Confidentiel : l'environnement d'exécution C++ tourne sur votre appareil : votre code n'est jamais envoyé.
  • Mode sombre et raccourcis clavier : Ctrl/⌘ + Enter exécute le code.
  • Gratuit : sans inscription, sans limite d'utilisation.

Découvrez d'autres langages de programmation

Comment utiliser le compilateur C++ en ligne

  1. Tapez ou collez votre code C++ dans l'éditeur. Il doit contenir un int main(). Réinitialiser l'exemple rétablit le programme de départ.
  2. Si votre programme lit depuis std::cin ou std::getline, placez d'abord les données dans le champ Entrée (stdin).
  3. Appuyez sur Exécuter, ou sur Ctrl + Entrée (⌘ + Entrée sur Mac). La page compile main.cpp, affiche les éventuels diagnostics, puis exécute le programme.
  4. Choisissez une limite de temps de 5, 15 ou 60 secondes. Si une exécution la dépasse, le programme est arrêté. Arrêter l'interrompt immédiatement.

Lors de la première exécution, la page télécharge la chaîne de compilation Clang, environ 30 Mo, que votre navigateur met ensuite en cache. Par la suite, compiler un programme courant prend nettement moins d'une seconde. Copier et main.cpp vous permettent de conserver votre code, A−/A+ changent la taille du texte, le bouton de disposition bascule entre des volets côte à côte et superposés, et Plein écran (Ctrl/⌘ + Maj + F, Échap pour quitter) donne toute la fenêtre à l'éditeur.

Rien n'est envoyé en ligne. Le compilateur et votre programme s'exécutent tous deux dans votre navigateur, et votre dernier code n'est enregistré que dans le stockage local de votre navigateur.

Ce qui est pris en charge

La page utilise un véritable compilateur Clang/LLVM 21, compilé pour WebAssembly par le projet YoWASP. Il compile votre code source en un programme WebAssembly (WASI) que le navigateur exécute. La commande lancée équivaut à :

clang++ main.cpp -std=c++20 -O2 -Wall -fno-exceptions -o main.wasm
  • C++20 : auto, lambdas, for sur intervalle, liaisons structurées, constexpr, concepts et initialiseurs désignés.
  • La bibliothèque standard de libc++ : vector, string, map, unordered_map, set, algorithm, numeric, iostream, sstream, iomanip, optional et le reste des conteneurs et algorithmes.
  • Les diagnostics propres à Clang, affichés exactement comme le compilateur les produit, avec main.cpp:line:column, y compris les erreurs de templates et les avertissements -Wall.
  • Une valeur de retour non nulle de main est signalée par le message Le processus s'est terminé avec le code N.

Pourquoi les exceptions sont désactivées

Les exceptions C++ nécessitent dans WebAssembly une prise en charge supplémentaire à l'exécution que cette chaîne de compilation intégrée au navigateur ne fournit pas : le code est donc compilé avec -fno-exceptions. En conséquence, try, throw et catch ne sont pas pris en charge, et le code qui les utilise ne compile pas. Les fonctions de bibliothèque qui lèveraient normalement une exception, comme std::stoi sur une entrée invalide ou .at() avec un indice hors limites, ne peuvent pas non plus être interceptées ici. Vérifiez l'entrée avant de la convertir, comparez les indices à size(), ou renvoyez un std::optional pour signaler un échec :

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

Autres limitations

  • Pas de threads : std::thread, std::async et les pthreads ne sont pas disponibles.
  • Pas de réseau, pas de fork/exec et pas de vrai système de fichiers : std::ifstream ne peut donc pas lire de fichiers sur votre ordinateur. Utilisez plutôt stdin.
  • Pas de bibliothèques graphiques ni d'interface utilisateur comme Qt, SFML ou OpenGL. La sortie est uniquement textuelle.
  • Les bibliothèques tierces comme Boost ne sont pas installées. Tout doit tenir dans l'unique fichier main.cpp.

Le C++ moderne en quelques lignes

Le programme de départ montre les idiomes qui rendent le C++ moderne plus concis que le code des anciens manuels :

std::map<std::string, int> ages{ {"Ada", 36}, {"Linus", 54} };
for (const auto& [name, age] : ages)      // liaisons structurées
    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; });
  • Dans les boucles, préférez '\n' à std::endl. endl vide aussi le tampon du flux, ce qui est plus lent.
  • Quand vous combinez std::cin >> n et std::getline, appelez d'abord std::cin.ignore(), sinon getline lit le reste de la ligne précédente comme une chaîne vide.
  • operator[] sur un std::map insère une valeur par défaut quand la clé est absente. Utilisez find ou contains (C++20) pour rechercher une clé sans modifier la map.

Questions fréquentes

Quelle norme C++ est utilisée ?

C++20, compilé par Clang 21 avec -O2 -Wall. Le code écrit pour C++11, C++14 ou C++17 compile également.

Pourquoi mon code avec try/catch ne compile-t-il pas ?

Les exceptions sont désactivées avec -fno-exceptions. Remplacez-les par des valeurs de retour, par std::optional ou par des vérifications explicites avant l'opération risquée.

Puis-je utiliser bits/stdc++.h ?

Non. Cet en-tête est propre à GCC et n'existe pas dans libc++. Incluez les en-têtes standard dont vous avez besoin, comme <iostream>, <vector> et <algorithm>.

Existe-t-il une version en C pur ?

Oui, le compilateur C en ligne utilise le même Clang en mode C17. Vous pouvez aussi parcourir tous les compilateurs en ligne du site.

Mis à jour

Copié dans le presse-papiers