ベクトルを execvp の 2 番目の引数として渡したいです。出来ますか?
7029 次
3 に答える
8
はい、ベクトルが使用する内部配列を利用することで、かなりきれいに行うことができます。
標準では要素が連続して格納されることが保証されているため、これは機能します ( https://stackoverflow.com/a/2923290/383983を参照) 。
#include <vector>
using namespace std;
int main(void) {
vector<char *> commandVector;
// do a push_back for the command, then each of the arguments
commandVector.push_back("echo");
commandVector.push_back("testing");
commandVector.push_back("1");
commandVector.push_back("2");
commandVector.push_back("3");
// push NULL to the end of the vector (execvp expects NULL as last element)
commandVector.push_back(NULL);
// pass the vector's internal array to execvp
char **command = &commandVector[0];
int status = execvp(command[0], command);
return 0;
}
于 2012-04-17T17:37:20.777 に答える
2
直接ではありません。どうにかして、ベクトルを NULL で終わる文字列ポインターの配列として表す必要があります。それが文字列のベクトルである場合、それは簡単です。他の種類のデータの場合は、文字列としてエンコードする方法を理解する必要があります。
于 2011-05-01T06:44:39.940 に答える