Visual Studioでint型のコマンドライン引数を受け取る方法(C++)


環境

  • Windows 10 Enterprise 2016 LTSB
  • Microsoft Visual Studio 2017

コマンドライン引数の設定

  1. ツールバーの「プロジェクト(P)」から一番下の「プロパティ」を選択する.
  2. 左側の「構成プロパティ」以下の「デバッグ」を選択し,「コマンド引数」に入力したい引数を記入する.(画像では6と14の二つにしている.)
  3. 右下の「OK」を押す.(「適用」でも良い)

受け取った文字列型の値をint型に変換

  • std::stoiを使用し文字列型をint型に変換する.
  • std::stoi#include<string>#include<string>using namespace std;が無いとエラーが出ると思われる.
#include <iostream>
#include<string>
using namespace std;

int main(int argc, char* argv[])
{
    int atama, asi; //変数の宣言

    //引数を変数に格納.
    atama = std::stoi(argv[1]);
    asi = std::stoi(argv[2]);

    return 0;
}   

サンプルコード(鶴亀算)

#include <iostream>
#include<string>
using namespace std;

int main(int argc, char* argv[])
{
    int atama, asi, turu, kame; //変数の宣言

    //引数を変数に格納.
    atama = std::stoi(argv[1]);
    asi = std::stoi(argv[2]);

    //鶴と亀の数の計算
    turu = 2 * atama - asi / 2;
    kame = atama - turu;

    if (turu < 0 || kame < 0)
    {
        cout << "error" << std::endl;
    }
    else
    {
        cout << "鶴の数:" << turu << std::endl;
        cout << "亀の数:" << kame << std::endl;
    }
    return 0;
}
  • 引数
    • 6
    • 14
  • 実行結果
鶴の数:5
亀の数:1

この記事を書いた経緯・感想

  • コマンドライン引数を単にargv[1]などから受け取ると文字列型になっているのでint型に使用とPythonと同じようにint(argv[1])などとしたらエラーが出た.
  • 適当にC++の型変更方法を調べたら(int)argv[1]などというのをどこかで見かけて,やってみたら,エラーは出ないが,引数として受け取った値がおかしい値になった.
  • もう一度文字列からint型への変更方法を調べたらstd::stoiがあったのでこれを使ったらできた.

参考文献