C++ online - IDE, Editor, Compiler, Interpreter

RSS

Kompilieren und führen Sie C++20-Code online mit Clang direkt im Browser aus: STL-Container, Algorithmen, iostream und stdin-Eingabe. Ohne Anmeldung, es wird nichts hochgeladen.

C++20 (Clang 21, WebAssembly) · Läuft in Ihrem Browser – Ihr Code erreicht nie unsere Server.
main.cppC++
Ausgabe

            
Eingabe (stdin), gelesen von scanf / std::cin / getline
Ctrl/⌘ + Enter zum Ausführen

Funktionen des Online-C++-Compilers (IDE, Editor & Interpreter)

Schreiben, ausführen und testen Sie C++-Code kostenlos online. Diese Seite ist Online-C++-IDE, Code-Editor, Compiler und Interpreter in einem: Code eingeben, auf „Ausführen“ klicken und sofort die Ausgabe sehen. Alles läuft in Ihrem Browser – nichts zu installieren, kein Konto nötig.

  • Code sofort ausführen: C++20 (Clang 21, WebAssembly), Ausgabe nach dem ersten Laden in weniger als einer Sekunde.
  • Code-Editor: Syntaxhervorhebung, Zeilennummern, Klammerzuordnung und automatisches Schließen von Klammern.
  • Programmeingabe (stdin): Geben Sie die Eingabe, die Ihr Programm liest, vor dem Ausführen ein.
  • Klare Fehlermeldungen: Fehlermeldungen und Warnungen erscheinen im Ausgabebereich – genau wie auf Ihrem eigenen Computer.
  • Vollbild: Ctrl/⌘ + Shift + F, anpassbare Schriftgröße, Layout nebeneinander oder untereinander und skalierbare Bereiche.
  • Automatisches Speichern: Ihr Code bleibt in Ihrem Browser gespeichert; laden Sie ihn als main.cpp herunter oder kopieren Sie ihn mit einem Klick.
  • Gefahrlos experimentieren: Ein Zeitlimit und eine Stopp-Schaltfläche beenden Endlosschleifen.
  • Privat: Die C++-Laufzeitumgebung läuft auf Ihrem Gerät, Ihr Code wird also nie hochgeladen.
  • Dunkelmodus und Tastenkürzel: Ctrl/⌘ + Enter führt den Code aus.
  • Kostenlos: keine Anmeldung, keine Nutzungslimits.

Weitere Programmiersprachen lernen

So nutzen Sie den Online-C++-Compiler

  1. Geben Sie Ihren C++-Code ein oder fügen Sie ihn ein: direkt in den Editor. Er braucht eine Funktion int main(). Beispiel zurücksetzen stellt das Startprogramm wieder her.
  2. Wenn Ihr Programm von std::cin oder std::getline liest, tragen Sie die Eingabe vorher in das Feld Eingabe (stdin) ein.
  3. Klicken Sie auf Ausführen oder drücken Sie Strg + Enter (⌘ + Enter auf dem Mac). Die Seite kompiliert main.cpp, zeigt etwaige Diagnosemeldungen an und führt das Programm dann aus.
  4. Wählen Sie ein Zeitlimit von 5, 15 oder 60 Sekunden. Überschreitet ein Lauf es, wird das Programm angehalten. Stopp beendet es sofort.

Beim ersten Lauf lädt die Seite die Clang-Toolchain herunter, rund 30 MB, die Ihr Browser anschließend zwischenspeichert. Danach dauert das Kompilieren eines typischen Programms deutlich weniger als eine Sekunde. Mit Kopieren und main.cpp sichern Sie Ihren Code, A−/A+ ändern die Schriftgröße, die Layout-Schaltfläche wechselt zwischen nebeneinander und untereinander angeordneten Bereichen, und Vollbild (Strg/⌘ + Umschalt + F, Esc zum Beenden) gibt dem Editor das ganze Fenster.

Nichts wird hochgeladen. Der Compiler und Ihr Programm laufen beide in Ihrem Browser, und Ihr zuletzt bearbeiteter Code wird nur im lokalen Speicher Ihres Browsers gespeichert.

Was unterstützt wird

Die Seite verwendet einen echten Clang/LLVM 21-Compiler, den das Projekt YoWASP für WebAssembly gebaut hat. Er kompiliert Ihren Quelltext zu einem WebAssembly-Programm (WASI), das der Browser ausführt. Der ausgeführte Befehl entspricht:

clang++ main.cpp -std=c++20 -O2 -Wall -fno-exceptions -o main.wasm
  • C++20: auto, Lambdas, bereichsbasiertes for, Structured Bindings, constexpr, Concepts und Designated Initializers.
  • Die Standardbibliothek aus libc++: vector, string, map, unordered_map, set, algorithm, numeric, iostream, sstream, iomanip, optional und die übrigen Container und Algorithmen.
  • Die Diagnosemeldungen von Clang selbst, genau so ausgegeben, wie der Compiler sie meldet, mit main.cpp:line:column, einschließlich Template-Fehlern und -Wall-Warnungen.
  • Ein Rückgabewert ungleich null aus main wird als Prozess mit Code N beendet gemeldet.

Warum Exceptions deaktiviert sind

C++-Exceptions brauchen in WebAssembly zusätzliche Laufzeitunterstützung, die diese Toolchain im Browser nicht bietet. Deshalb wird der Code mit -fno-exceptions kompiliert. Das heißt: try, throw und catch werden nicht unterstützt, und Code, der sie verwendet, lässt sich nicht kompilieren. Bibliotheksfunktionen, die normalerweise eine Exception auslösen würden, etwa std::stoi bei ungültiger Eingabe oder .at() mit einem Index außerhalb des Bereichs, lassen sich hier ebenfalls nicht abfangen. Prüfen Sie die Eingabe vor der Umwandlung, vergleichen Sie Indizes mit size() oder geben Sie ein std::optional zurück, um einen Fehler anzuzeigen:

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

Weitere Einschränkungen

  • Keine Threads: std::thread, std::async und pthreads stehen nicht zur Verfügung.
  • Kein Netzwerk, kein fork/exec und kein echtes Dateisystem, daher kann std::ifstream keine Dateien von Ihrem Computer lesen. Verwenden Sie stattdessen stdin.
  • Keine Grafik- oder GUI-Bibliotheken wie Qt, SFML oder OpenGL. Die Ausgabe ist reiner Text.
  • Bibliotheken von Drittanbietern wie Boost sind nicht installiert. Alles muss in der einen Datei main.cpp stehen.

Modernes C++ in wenigen Zeilen

Das Startprogramm zeigt die Idiome, die modernes C++ kürzer machen als älteren Lehrbuchcode:

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; });
  • Verwenden Sie in Schleifen lieber '\n' als std::endl. endl leert zusätzlich den Puffer des Streams, was langsamer ist.
  • Wenn Sie std::cin >> n mit std::getline mischen, rufen Sie vorher std::cin.ignore() auf, sonst liest getline den Rest der vorherigen Zeile als leere Zeichenkette.
  • operator[] auf einer std::map fügt einen Standardwert ein, wenn der Schlüssel fehlt. Verwenden Sie find oder contains (C++20), um einen Schlüssel nachzuschlagen, ohne die Map zu verändern.

Häufig gestellte Fragen

Welcher C++-Standard wird verwendet?

C++20, kompiliert von Clang 21 mit -O2 -Wall. Code, der für C++11, C++14 oder C++17 geschrieben wurde, lässt sich ebenfalls kompilieren.

Warum lässt sich mein Code mit try/catch nicht kompilieren?

Exceptions sind mit -fno-exceptions deaktiviert. Ersetzen Sie sie durch Rückgabewerte, std::optional oder ausdrückliche Prüfungen vor der riskanten Operation.

Kann ich bits/stdc++.h verwenden?

Nein. Dieser Header ist GCC-spezifisch und existiert in libc++ nicht. Binden Sie die Standard-Header ein, die Sie brauchen, etwa <iostream>, <vector> und <algorithm>.

Gibt es eine Version für reines C?

Ja, der Online-C-Compiler verwendet dasselbe Clang im C17-Modus. Sie können auch alle Online-Compiler der Website durchsuchen.

Aktualisiert

In die Zwischenablage kopiert