ハードコーディングされたファイル パスを読み取るプログラムがあり、代わりにコマンド ラインからファイル パスを読み取るようにしたいと考えています。そのために、コードを次のように変更しました。
#include <iostream>
int main(char *argv[])
{
...
}
しかし、argv[1]
このように公開された変数はポインター型のようで、文字列として必要です。このコマンド ライン引数を文字列に変換するにはどうすればよいですか?
ハードコーディングされたファイル パスを読み取るプログラムがあり、代わりにコマンド ラインからファイル パスを読み取るようにしたいと考えています。そのために、コードを次のように変更しました。
#include <iostream>
int main(char *argv[])
{
...
}
しかし、argv[1]
このように公開された変数はポインター型のようで、文字列として必要です。このコマンド ライン引数を文字列に変換するにはどうすればよいですか?
これはすでに C スタイルの文字列の配列です。
#include <iostream>
#include <string>
#include <vector>
int main(int argc, char *argv[]) // Don't forget first integral argument 'argc'
{
std::string current_exec_name = argv[0]; // Name of the current exec program
std::vector<std::string> all_args;
if (argc > 1) {
all_args.assign(argv + 1, argv + argc);
}
}
引数argc
は、引数の数と現在の実行ファイルです。
を作成できます。std::string
#include <string>
#include <vector>
int main(int argc, char *argv[])
{
// check if there is more than one argument and use the second one
// (the first argument is the executable)
if (argc > 1)
{
std::string arg1(argv[1]);
// do stuff with arg1
}
// Or, copy all arguments into a container of strings
std::vector<std::string> allArgs(argv, argv + argc);
}
#include <iostream>
std::string commandLineStr= "";
for (int i=1;i<argc;i++) commandLineStr.append(std::string(argv[i]).append(" "));
それは簡単です。これを行うだけです:
#include <iostream>
#include <vector>
#include <string.h>
int main(int argc, char *argv[])
{
std::vector<std::string> argList;
for(int i=0;i<argc;i++)
argList.push_back(argv[i]);
//now you can access argList[n]
}
@ベンジャミンリンドリーあなたは正しいです。これは良い解決策ではありません。juanchopanza が回答したものを読んでください。