C++でのコマンドライン引数の取得方法


C++でコマンドライン引数を取得する方法はいくつかあります。以下にいくつかの方法とそれぞれのコード例を示します。

  1. argcとargvを使用する方法:

C++のmain関数は通常、以下のように定義されています。

int main(int argc, char* argv[])
{
    // コマンドライン引数の処理
    // ...
    return 0;
}

argcはコマンドライン引数の数を表し、argvは引数の配列です。argv[0]にはプログラムの実行ファイル名が含まれます。以下は、引数の値を出力する例です。

#include <iostream>
int main(int argc, char* argv[])
{
    for (int i = 0; i < argc; ++i)
    {
        std::cout << "引数 " << i << ": " << argv[i] << std::endl;
    }

    return 0;
}
  1. boost::program_optionsライブラリを使用する方法:

boost::program_optionsライブラリを使用すると、より高度なコマンドラインオプションの処理が行えます。以下は、boost::program_optionsを使用してコマンドライン引数を解析する例です。

#include <iostream>
#include <boost/program_options.hpp>
namespace po = boost::program_options;
int main(int argc, char* argv[])
{
    po::options_description desc("Allowed options");
    desc.add_options()
        ("help", "ヘルプメッセージを表示")
        ("input", po::value<std::string>(), "入力ファイル名")
        ("output", po::value<std::string>(), "出力ファイル名");
    po::variables_map vm;
    po::store(po::parse_command_line(argc, argv, desc), vm);
    po::notify(vm);
    if (vm.count("help"))
    {
        std::cout << desc << std::endl;
        return 1;
    }
    if (vm.count("input"))
    {
        std::cout << "入力ファイル: " << vm["input"].as<std::string>() << std::endl;
    }
    if (vm.count("output"))
    {
        std::cout << "出力ファイル: " << vm["output"].as<std::string>() << std::endl;
    }
    return 0;
}

この例では、--helpオプションでヘルプメッセージが表示され、--inputおよび--outputオプションで入力および出力ファイル名が指定されます。

これらはC++でコマンドライン引数を取得するための一般的な方法の一部です。他にもさまざまな方法がありますが、ここでは代表的なものを紹介しました。選択した方法に応じて、自分のプログラムに最適なものを選んでください。