我正在使用 ideone 在线解释器 ( http://ideone.com/ ) 来测试一些 C++ 和 Python 程序。如何指定命令行参数而不是使用 STDIN 输入?
问问题
4503 次
3 回答
9
看起来你不能,但快速破解应该可以解决问题:
static char * const ARGV[] = { "myprog", "hello", "world", NULL };
int main(int argc, char * argv[])
{
argc = 3;
argv = ARGV;
// ...
}
或者将标准输入转换为 args:
#include <vector>
#include <string>
#include <iterator>
#include <iostream>
std::vector<char *> fabricate(std::vector<std::string> & v)
{
std::vector<char *> res(v.size() + 1, NULL);
for (std::size_t i = 0; i != v.size(); ++i) { res[i] = &v[i][0]; }
return res;
}
std::vector<std::string> args_vector((std::istream_iterator<std::string>(std::cin)), std::istream_iterator<std::string>());
std::vector<char *> argv_vector = fabricate(args_vector);
int main(int argc, char * argv[])
{
argc = args_vector.size();
argv = argv_vector.data();
// ...
}
于 2012-09-04T07:07:46.157 回答
5
在 python 中,你可以像这样硬编码:
import sys
print sys.argv
sys.argv[1:] = ["test1", "test2"]
print sys.argv
这将输出:
['prog.py']
['prog.py', 'test1', 'test2']
从标准输入读取:
import sys
import shlex
print sys.argv
sys.argv[1:] = shlex.split(None)
print sys.argv
于 2012-09-04T09:43:11.647 回答
3
只需初始化以模拟命令行参数
static char *argv[] = {"program_name", "1st argument", "2nd argument", NULL};
static int argc = 3;
int main() {
}
于 2012-09-04T07:07:13.647 回答