C++ онлайн - IDE, редактор, компилятор, интерпретатор

RSS

Компилируйте и запускайте код на C++20 онлайн с Clang в браузере: контейнеры и алгоритмы STL, iostream и ввод stdin. Без регистрации, ничего не загружается на сервер.

C++20 (Clang 21, WebAssembly) · Работает в браузере, поэтому ваш код никогда не попадает на наши серверы.
main.cppC++
Результат

            
Ввод (stdin), читается через scanf / std::cin / getline
Ctrl/⌘ + Enter для запуска

Возможности онлайн-компилятора C++ (IDE, редактор и интерпретатор)

Пишите, запускайте и тестируйте код на C++ онлайн бесплатно. Эта страница — онлайн-IDE, редактор кода, компилятор и интерпретатор C++ в одном: введите код, нажмите «Запустить» и сразу увидите результат. Все работает в браузере — ничего не нужно устанавливать и не нужно создавать аккаунт.

  • Мгновенный запуск кода: C++20 (Clang 21, WebAssembly), вывод менее чем за секунду после первой загрузки.
  • Редактор кода: подсветка синтаксиса, номера строк, подсветка парных скобок и автозакрытие скобок.
  • Ввод программы (stdin): введите данные, которые читает программа, до ее запуска.
  • Понятные ошибки: сообщения об ошибках и предупреждения появляются в панели вывода так же, как на вашем компьютере.
  • Полноэкранный режим: Ctrl/⌘ + Shift + F, настраиваемый размер шрифта, расположение рядом или друг под другом и изменяемые размеры панелей.
  • Автосохранение: ваш код хранится в браузере; скачайте его как main.cpp или скопируйте одним щелчком.
  • Безопасные эксперименты: ограничение времени и кнопка «Остановить» прерывают бесконечные циклы.
  • Конфиденциальность: среда выполнения C++ работает на вашем устройстве, поэтому код никогда не загружается на сервер.
  • Темная тема и сочетания клавиш: Ctrl/⌘ + Enter запускает код.
  • Бесплатно: без регистрации и ограничений использования.

Изучайте другие языки программирования

Как пользоваться онлайн-компилятором C++

  1. Введите или вставьте код на C++ в редактор. В нём должна быть функция int main(). Кнопка Сбросить пример возвращает стартовую программу.
  2. Если программа читает данные из std::cin или std::getline, сначала введите их в поле Ввод (stdin).
  3. Нажмите кнопку Запустить или Ctrl + Enter (⌘ + Enter на Mac). Страница компилирует main.cpp, показывает диагностические сообщения, если они есть, и затем запускает программу.
  4. В поле Ограничение времени выберите 5, 15 или 60 секунд. Если выполнение длится дольше, программа останавливается. Кнопка Остановить завершает её сразу.

При первом запуске страница скачивает набор инструментов Clang — примерно 30 МБ, — который затем кэшируется в браузере. После этого компиляция типичной программы занимает гораздо меньше секунды. Кнопки Копировать и main.cpp позволяют сохранить код, A−/A+ меняют размер текста, кнопка макета переключает панели между расположением рядом и друг под другом, а Полноэкранный режим (Ctrl/⌘ + Shift + F, выход — Esc) отдаёт редактору всё окно.

Ничего не загружается на сервер. И компилятор, и ваша программа работают в вашем браузере, а последняя версия кода сохраняется только в локальном хранилище браузера.

Что поддерживается

Страница использует настоящий компилятор Clang/LLVM 21, собранный для WebAssembly проектом YoWASP. Он компилирует исходный код в программу WebAssembly (WASI), которую выполняет браузер. Выполняемая команда равнозначна такой:

clang++ main.cpp -std=c++20 -O2 -Wall -fno-exceptions -o main.wasm
  • C++20: auto, лямбды, цикл for по диапазону, структурированные привязки, constexpr, концепты и назначенные инициализаторы.
  • Стандартная библиотека libc++: vector, string, map, unordered_map, set, algorithm, numeric, iostream, sstream, iomanip, optional и остальные контейнеры и алгоритмы.
  • Собственная диагностика Clang выводится в точности так, как её выдаёт компилятор, в формате main.cpp:line:column, включая ошибки шаблонов и предупреждения -Wall.
  • Ненулевой код возврата из main отображается как Процесс завершился с кодом N.

Почему отключены исключения

Исключениям C++ в WebAssembly нужна дополнительная поддержка среды выполнения, которой нет в этом наборе инструментов для браузера, поэтому код компилируется с флагом -fno-exceptions. В результате try, throw и catch не поддерживаются, и код, который их использует, не компилируется. Функции библиотеки, которые обычно выбрасывают исключения, например std::stoi при некорректных данных или .at() с индексом вне диапазона, здесь тоже нельзя перехватить. Проверяйте входные данные перед преобразованием, сравнивайте индексы с size() или возвращайте std::optional, чтобы сообщить об ошибке:

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

Другие ограничения

  • Нет потоков: std::thread, std::async и pthreads недоступны.
  • Нет сети, нет fork/exec и нет настоящей файловой системы, поэтому std::ifstream не может читать файлы с вашего компьютера. Используйте вместо этого stdin.
  • Нет графических библиотек и библиотек интерфейса, таких как Qt, SFML или OpenGL. Вывод только текстовый.
  • Сторонние библиотеки, например Boost, не установлены. Весь код должен находиться в одном файле main.cpp.

Современный C++ в нескольких строках

Стартовая программа показывает приёмы, благодаря которым современный C++ короче кода из старых учебников:

std::map<std::string, int> ages{ {"Ada", 36}, {"Linus", 54} };
for (const auto& [name, age] : ages)      // структурированные привязки
    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; });
  • В циклах используйте '\n' вместо std::endl. endl ещё и сбрасывает буфер потока, а это медленнее.
  • Если вы сочетаете std::cin >> n и std::getline, сначала вызовите std::cin.ignore(), иначе getline прочитает остаток предыдущей строки как пустую строку.
  • operator[] у std::map вставляет значение по умолчанию, если ключа нет. Чтобы найти ключ, не меняя map, используйте find или contains (C++20).

Часто задаваемые вопросы

Какой стандарт C++ используется?

C++20; код компилирует Clang 21 с флагами -O2 -Wall. Код, написанный для C++11, C++14 или C++17, тоже компилируется.

Почему мой код с try/catch не компилируется?

Исключения отключены флагом -fno-exceptions. Замените их возвращаемыми значениями, std::optional или явными проверками перед рискованной операцией.

Можно ли использовать bits/stdc++.h?

Нет. Этот заголовок есть только в GCC и отсутствует в libc++. Подключайте нужные стандартные заголовки, например <iostream>, <vector> и <algorithm>.

Есть ли версия для обычного C?

Да, онлайн-компилятор C использует тот же Clang в режиме C17. Также можно посмотреть все онлайн-компиляторы на сайте.

Обновлено

Скопировано в буфер обмена