7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Visual Studioでのコマンドライン引数の使い方(argc, argv)

Last updated at Posted at 2020-06-23

#はじめに
######※これは、VC++ Visual Studioを利用する初心者向けの学習用記事です。
今回はVisual Studioでコマンドライン引数(argc, argv)を利用する設定を行う。

#コマンドライン引数(argc, argv)とは、
コマンドライン引数とはmain関数に用いる引数のことです。

自作の関数を作成したことのあるエンジニアであれば、引数を設定したことがあると思うが、それのMain関数版である。
自作関数の場合は、ソースコード内で引数に変数や定値を入れて関数を呼び出すが、
main関数の場合は、実行するときにコマンドラインからコマンドライン引数に値を与えます。

自作関数の場合
int foo(int a, int b){
    return a + b;
}

int main(){
    int a = 1;
    int result;
    result = foo(a, 1); //自作関数の引数代入はここで行う。aと1が引数へ代入される。
}
コマンドライン引数の場合
C:/Windows/system32>program.exe 引数1 引数2

コマンドライン引数代入は、実行ファイルの後ろに続けて、「半角スペース」を空けながら並べて記述する。

#Visual Studioでのコマンドライン引数の設定方法
コマンドライン引数を設定したいプロジェクトをVisual Studioで開いてください。
Visual Studioの画面が開いたのち、上部のメニューより「プロジェクト」-「プロパティ」を開いてください。
Visual Studioメニュー画面.PNG

プロパティの画面が開いたのち、左部のメニューより「構成プロパティ」-「デバック」を選択し、「コマンド引数」の欄をクリックします。
Visual Studioプロパティページ.PNG
「コマンド引数」の欄に、半角スペースで値を並べて入力することで、前述したようにコマンドライン引数ような入力が可能です。

#テストプログラム

Argument.cpp
#include<iostream>

using namespace std;

int main(int argc, char* argv[]) {
    for (int i = 0; i < argc; i++)
        cout << "argv[" << i << "] " << argv[i] << endl;
   
    return 0;
}

Visual Studioでのコマンド引数は、「test 1」と設定した。

出力結果
argv[0] C:/Users/User/source/repos/Project/x64/Debug/Project.exe
argv[1] test
argv[2] 1

argv[0]は、必ず実行ファイルの名前が入る。
コンソールから実行した場合は、自分が指定した「パス+実行ファイル名」のみだが、Visual Studioの場合は絶対パスが格納される。
そして、argv[1]以降には、Visual Studioで設定したコマンド引数が順番に出力される。

#注意点
ここで注意しなければならないのは、argv[]はchar型であることだ。
引数に数値を入力したからといって、そのまま利用できるわけではない。
char型なので、整数ならint型、小数点ならfloat,double型などに変換する必要がある。
C++であれば、char型をstring型に変換することも多いと思われる。

変換例
int a = atoi(argv[0]); //引数が整数の場合
double b = atof(argv[1]); //引数が小数点の場合
std::string str = argv[3]; //引数をstring型に変換する場合

#さいごに
今回はVisual Studioでコマンドライン引数(argc, argv)を利用する設定を行った。
コンパイルに時間のかかるプログラムや閾値などを簡単に設定したい場合などに有用な方法である。
バッチファイルなどを組めば、引数だけを変えて様々処理を自動で処理することも可能であるため、
覚えておいて損のない機能だ。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?