C++オンラインコンパイラ&デバッガー

サーバーモードのGDBでブレークポイント、変数確認、ステップ実行を使ってC++をデバッグできます。

🚀 2,389,885 合計実行 (98,490 今月)
出力

C++のコーディングチャレンジで練習

このエディタで実践的な問題を解こう。サンプルテストを実行し、提出してAIコードレビューを受けられます。

すべてのC++チャレンジ
簡単

Average of Three

Average three whole numbers.

BeginnerLearning-pathVariables
簡単

Rectangle Perimeter

Compute the perimeter of a rectangle from its sides.

BeginnerLearning-pathVariables
中級

Island Perimeter

Measure the coastline of land cells in a grid.

AdvancedGridsHackathon
まだ解答がありません
中級

K-th Smallest Element

Find the k-th smallest value without fully sorting.

AdvancedCompetitive-programmingSorting
まだ解答がありません
難しい

2つのソート済み配列の中央値

2つのソート済みリストを結合したときの中央値を求めてください。

AdvancedBinary-searchCompetitive-programming
まだ解答がありません
中級

Game of Life Step

Advance Conway's Game of Life by one generation.

AdvancedGridsHackathonSimulation
まだ解答がありません
難しい

Shortest Delivery Tour

Visit every city once and return home as cheaply as possible.

AdvancedBitmasksCompetitive-programmingDynamic-programming
まだ解答がありません
難しい

Strongly Connected Components

Count groups of nodes that can all reach each other.

AdvancedCompetitive-programmingGraphs
まだ解答がありません
難しい

Longest Path in a DAG

Find the heaviest path in a task dependency graph.

AdvancedGraphsHackathonTopological-sort
まだ解答がありません
難しい

Matrix Chain Multiplication

Find the cheapest order to multiply a chain of matrices.

AdvancedCompetitive-programmingDynamic-programming
まだ解答がありません
難しい

Minimum Window Substring

Find the shortest piece of text containing all required characters.

AdvancedCompetitive-programmingSliding-windowStrings
まだ解答がありません
難しい

Word Break

Decide whether text can be split into dictionary words.

AdvancedDynamic-programmingHackathonStrings
まだ解答がありません

トピックから探す

実践コード、出力、メモリモデル、データ構造、アルゴリズム、モダンC++を通してCとC++を比較しながら学びます。

C/C++サンプル →

💻 このC++オンライン実行ツールについて

CodeUtility C++ Executor を使えば、ブラウザ上で直接C++コードを書いて実行できます — インストールやコンパイラ設定は一切不要です。安全なサンドボックスで動作し、 C++11、C++14、C++17から最新バージョンまでの実際のC++標準に対応しています。

このツールはクラウド上で動作する本物のC++コンパイラでコードをコンパイル・実行し、 バージョン間で正確かつ一貫した挙動を保証します。変数、関数、ループ、条件分岐、 オブジェクト指向といったC++の基本概念を自由に試せます。

面接の準備、モダンC++の学習、アルゴリズムのロジック検証など、どんな用途でも、 CodeUtility C++ Executor は、どのデバイスからでもすぐにコードを実行できるシンプルかつ強力な環境を提供します。

単なるコードランナーではありません

同じ実行環境で、複数ファイル対応エディター、分離された実行ターミナル、ランタイム別ライブラリ、永続ワークスペース、共有、リアルタイム共同作業を利用できます。

この実行環境の使い方

ランタイムを選択し、ファイルを開くか作成してコードを記述し、[実行]を選択します。出力はターミナルに表示されます。サインインしたユーザーは、ワークスペースにファイルを保存し、ライブラリをインストールして、共有を通じて共同作業できます。

  1. バージョンを選択して現在のファイルを編集するか、ワークスペース内の別のファイルを開きます。
  2. コードを実行し、求められた場合はターミナルに入力して、保存された実行履歴を確認します。
  3. 複数のコードスニペットが必要な作業では、ライブラリ、ワークスペースツール、共有、チャットを利用します。

💡 上で試せるC++の基本とサンプル

1. 変数と定数の宣言

C++では、各変数の型を宣言する必要があります。constを使うと、初期化後に変更できない読み取り専用の値を定義できます。

int age = 30;
double pi = 3.14159;
char grade = 'A';
std::string name = "Alice";
bool isActive = true;

// 定数
const int MAX_USERS = 100;
const std::string COMPANY = "CodeUtility";

// const を変更しようとするとコンパイル時エラーになります
// MAX_USERS = 200; // ❌ エラー

2. 条件分岐(if / switch)

分岐にはif、else if、elseを使います。複数の値を扱う場合はswitchを使います。

int x = 2;
if (x == 1) {
    std::cout << "1\n";
} else if (x == 2) {
    std::cout << "2\n";
} else {
    std::cout << "その他\n";
}

// switch文
switch (x) {
    case 1:
        std::cout << "1\n";
        break;
    case 2:
        std::cout << "2\n";
        break;
    default:
        std::cout << "その他\n";
}

3. ループ

for、while、do-whileでコードブロックを繰り返します。

for (int i = 0; i < 3; i++) {
    std::cout << i << "\n";
}

int n = 3;
while (n > 0) {
    std::cout << n << "\n";
    n--;
}

4. 配列

配列は同じ型の要素を複数格納します。

int numbers[3] = {10, 20, 30};
std::cout << numbers[1] << "\n";

5. 配列/ベクターの操作

動的配列にはstd::vectorを使います。

#include <vector>

std::vector nums = {1, 2, 3};
nums.push_back(4);
nums.pop_back();

for (int n : nums) {
    std::cout << n << " ";
}

6. コンソール入出力

入力にはstd::cin、出力にはstd::coutを使います。

std::string name;
std::cout << "あなたの名前を入力してください: ";
std::cin >> name;
std::cout << "こんにちは、" << name << "\n";

7. 関数

関数は再利用可能な処理をまとめます。引数と戻り値の型を指定します。

int add(int a, int b) {
    return a + b;
}

std::cout << add(3, 4);

8. マップ

std::map は辞書のようにキーと値のペアを格納します。

#include <map>

std::map ages;
ages["Alice"] = 30;
std::cout << ages["Alice"];

9. 例外処理

try と catch を使って実行時エラーを処理します。

try {
    throw std::runtime_error("エラーが発生しました");
} catch (const std::exception& e) {
    std::cout << e.what();
}

10. ファイル入出力

fstream を使ってファイルの読み書きを行います。

#include <fstream>

std::ofstream out("file.txt");
out << "こんにちは、ファイル";
out.close();

std::ifstream in("file.txt");
std::string line;
getline(in, line);
std::cout << line;
in.close();

11. 文字列操作

C++の文字列は length()、substr()、find() といったメソッドをサポートしています。

std::string text = "Hello World";
std::cout << text.length();
std::cout << text.substr(0, 5);
std::cout << text.find("World");

12. クラスとオブジェクト

C++はクラスを使ったオブジェクト指向プログラミングをサポートしています。

class Person {
  public:
    std::string name;
    Person(std::string n) : name(n) {}
    void greet() { std::cout << "こんにちは、私は " << name; }
};

Person p("Alice");
p.greet();

13. ポインタ

ポインタは別の変数のメモリアドレスを保持します。アドレスを取得するには &、 参照外し(そのアドレスの値にアクセス)には * を使います。

int x = 10;
int* ptr = &x;

std::cout << "x の値: " << x << "\n";
std::cout << "x のアドレス: " << ptr << "\n";
std::cout << "ポインタ経由の値: " << *ptr << "\n";

// ポインタ経由で x を変更
*ptr = 20;
std::cout << "更新後の x: " << x << "\n";

🐞 %{language}コードをオンラインでデバッグする方法

オンライン%{language}デバッガーなら、コンパイラやIDEをインストールせずに実行時エラーやロジックエラーを調査できます。サーバーモードはデバッグ情報付きでコンパイルし、GDBで実行します。

  1. 行番号の横にブレークポイントを設定します。
  2. Debugを選択してコンパイルし、最初のブレークポイントで停止します。
  3. 現在行、コールスタック、変数を確認します。
  4. Continue、Step Over、Step Into、Step Outで実行を制御します。
  5. 終了するときはStopを選択します。

再現可能な小さなコードから始め、想定外の動作が起きる直前にブレークポイントを置きましょう。