Форматер кода C++
Переиндентируйте исходный код C и C++, отслеживая глубину вложения скобок ({ }) — каждый блок получает согласованный отступ, комментарии и строковые литералы остаются без изменений.
Ввод
Параметры форматирования
Вывод
Другие способы использовать этот инструмент
REST API
curl -X POST https://api.iotools.cloud/v1/tool/cpp-code-formatter \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"inputCode": "int max(int a, int b) {\n if (a > b) {\nret…",
"indentSize": "4"
}'Подставьте свой собственный ключ из аккаунта. Поля инструмента — это тело запроса, без обёртки.
Спросите у ИИ-агента
Use the IOTools `cpp-code-formatter` tool (C++ Code Formatter) on this input:
YOUR_INPUT_HEREВставьте это любому агенту, подключённому к MCP-серверу IOTools, и добавьте свой ввод.
Виджет для встраивания
<iframe
src="https://iotools.cloud/embed/cpp-code-formatter/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title="Форматер кода C++ — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>Вставьте это на свою страницу — бесплатно, без ключа, нужна лишь обратная ссылка.
| Стоимость вызова API/MCP | От 5 кредитов |
|---|---|
| Нужно больше кредитов? | Посмотреть тарифы |
Также доступно через
Руководства
Что делает этот инструмент
Исходный код C и C++, взятый из поста форума, диффа, фрагмента, созданного ИИ, или файла, прошедшего через слишком много ручного редактирования, обычно оканчивается неконсистентным отступом — смешанные табуляции и пробелы, тело if на неправильной глубине, закрывающие скобки, которые не совпадают с строкой, которая их открыла. Этот инструмент переиндентирует код, отслеживая глубину вложения скобок ({ / }) строка за строкой: каждая строка сбрасывается на глубину × размер отступа пробелов, и закрывающая скобка } уменьшается перед печатью, чтобы она аккуратно совпадала с открывающей скобкой.
Это переиндентер на основе глубины скобок, а не полный форматер C++. Он не анализирует грамматику C++, не переписывает интервалы операторов, не навязывает стиль скобок (Allman vs. attached), не выравнивает указатели (int* p vs int *p) и не переносит длинные строки на предел столбца — это то, что делает настоящий инструмент вроде clang-format. Что он исправляет — это самая распространённая проблема читаемости: строки, находящиеся на неправильном уровне отступа. Все остальное в строке — токены, пробелы между ними, текст комментариев — остаётся ровно таким, как вы его написали; изменяется только ведущий пробел.
Как его использовать
- Вставьте свой код C или C++ в поле Код C / C++ или загрузите исходный файл напрямую.
- Выберите Размер отступа — 2 или 4 пробела на уровень вложения (4 — это по умолчанию и соответствует распространённым руководствам стиля C++).
- Результат переиндентирования появляется мгновенно в панели Отформатированный код. Скопируйте его или загрузите как
formatted.cpp.
Форматирование происходит автоматически при вводе или редактировании входных данных — нет кнопки для нажатия.
Как работает логика отступа
Форматер читает ваш код строка за строкой и ведёт текущую глубину вложения. Строка сканируется на нетто-количество {/}: каждый { увеличивает глубину, применяемую к строкам после него, каждый } уменьшает глубину. Строка, первый символ которой — это }, уменьшается на один уровень перед печатью, поэтому } (и } else {) визуально совпадают со строкой, которая открыла блок.
Поскольку отступ не должен нарушаться случайной скобкой, которая на самом деле не является кодом, сканер пропускает символы скобок, которые появляются внутри литералов строк "...", литералов символов '...', комментариев строк // и блочных комментариев /* ... */ — включая блочные комментарии, охватывающие несколько строк, во время которых отслеживание глубины заморожено до обнаружения закрывающего */. Это охватывает подавляющее большинство реального исходного кода C/C++. Несколько граничных случаев намеренно выходят за рамки этого лёгкого подхода: настоящий анализатор C++ также должен был бы обрабатывать литералы сырых строк (R"(...)"), множество закрывающих скобок в начале одной строки (каждая рассматривается как единый шаг уменьшения) и макросы препроцессора, переопределяющие подобные скобкам токены.
Если скобки в ваших входных данных несбалансированы — отсутствует } или лишняя — форматер никогда не ошибается и не зависает. Глубина просто перестаёт уменьшаться, как только достигает нуля, поэтому остаток файла по-прежнему форматируется разумно вместо того, чтобы рухнуть в отрицательный отступ.
FAQ
Ведёт ли себя это как clang-format? Нет. clang-format полностью анализирует C++ и может переписать стиль скобок, интервалы операторов, выравнивание указателей и разрывы строк в соответствии с названным стилем (LLVM, Google, WebKit и т. д.). Этот инструмент только исправляет глубину отступа на основе вложения скобок — гораздо меньшая, но всё ещё очень полезная часть того, что делает код читаемым.
Будет ли это менять логику моего кода или переписывать токены? Нет. Заменяется только ведущий пробел каждой строки. Все остальное — интервалы внутри строки, содержание строк, текст комментариев, имена переменных — остаётся ровно таким, как вы его написали.
Работает ли это с простым C, а не только с C++? Да. Форматер смотрит только на вложение скобок и синтаксис комментариев/строк, которые идентичны в C и C++.
Что происходит с несбалансированными скобками?
Счётчик глубины фиксируется на нуле — он никогда не становится отрицательным — поэтому отсутствующий или лишний } gracefully деградирует вместо того, чтобы производить нарушенные результаты для остальной части файла.
Может ли он форматировать несколько файлов одновременно? Используйте режим пакетной обработки инструмента (если доступен) для запуска одних и тех же настроек отступа на очереди загруженных файлов.
Конфиденциальность
Этот инструмент работает полностью в вашем браузере. Ваш исходный код — включая любые комментарии, строки или пути к файлам, которые он содержит — никогда не загружается на сервер.