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

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

🚀 2,393,453 合計実行 (1,079 今月)
出力

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
簡単

顧客と注文を結合する

LINQ の Join のように顧客と注文を結び付け、顧客ごとの合計金額を報告します。

学べること LINQ Joinグループ化
ArraysSorting
まだ解答がありません
簡単

ToDo リスト

タスクのリストを管理します。追加、完了、削除を行い、残っているタスクを報告します。

学べること 型付きコレクションレコード
BeginnerSimulationStrings
まだ解答がありません
簡単

フラットな JSON の数値を合計

整数を値に持つフラットな JSON オブジェクトを解析し、値の合計を求めます。

学べること JSON の解析文字列の分割
ParsingStrings
まだ解答がありません
簡単

WhenAll の合計時間

各グループのタスクが Task.WhenAll でまとめて実行され、グループが順番に実行されるとき、プログラム全体にどれくらい時間がかかるかを求めます。

学べること Async/awaitTask.WhenAll
ArraysBeginner
まだ解答がありません
中級

並列タスクの完了順

最大で k 個ずつタスクを同時に実行し、完了する順序を返します。

学べること 並行処理優先度付きキュー
SimulationSorting
まだ解答がありません
中級

最小値スタック

push や pop のたびに、最小要素を即座に返せるスタックを作ります。

学べること スタック最小値の追跡
Data-structuresStacks
まだ解答がありません
簡単

重複のないレコード

値が等しい重複レコードを削除し、それぞれ最初に現れたものだけを順序通りに残します。

学べること レコード値による等価性
BeginnerStrings
まだ解答がありません
簡単

選んだキーで並べ替え

実行時に選んだ比較器で、名前または年齢順に人を並べ替え、同順位は一貫した方法で解消します。

学べること 比較子並べ替え
ArraysSorting
まだ解答がありません
中級

週給の計算

それぞれ独自のルールで支払われる、給与制・時給制・歩合制の従業員の1週間分の給与合計を求めます。

学べること ポリモーフィズム残業代の計算
ParsingSimulationmath
まだ解答がありません
簡単

通知のコスト

メール、SMS、プッシュの各チャネルがそれぞれの方法でコストを計算してメッセージを送ります。

学べること ポリモーフィズム整数の割り算
SimulationStrings
まだ解答がありません

💻 この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を選択します。

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