【发布时间】:2017-05-10 01:23:01
【问题描述】:
我希望能够通过我将调用长度的命令行参数传递一个整数。我需要使这个常量,因为它将用于确定几个位集的大小。我尝试过很多方法,例如:
int main(int arc, const char* argv[]){
const int * ptr;
if (!(istringstream{argv[1]} >> ptr)) { return 1;}
const int length = *ptr;
bitset<length> right_ones = 1;
return 0;
}
我也试过这样:
int main(int arc, const char* argv[]){
int test_int;
if (!(istringstream{argv[1]} >> test_int)) { return 1;}
const int length = argv[1];
bitset<length> right_ones = 1;
return 0;
}
但是我尝试过的所有方法都没有奏效。我怎样才能做到这一点?
【问题讨论】:
-
如果通过命令行参数传递,显然不是常量。
-
让您的 DeLorean 达到 88 英里/小时。运行程序,观察用户未来的输入,然后返回添加。
-
模板只能与编译时间常数一起使用。运行前传递的值显然不是编译时常量
-
如果这是一个编译时间常数,为什么不把它作为编译器参数(就像在 qmake 项目文件中,取决于你使用什么)而不是运行时参数?
-
除非用 C++17 改变,否则你可以使用
std::vector<bool>。在某些方面,它的行为更像bitset而不是vector,所以我记得打算更改它并引入一个新类来替换功能。
标签: c++ constants command-line-arguments bitset variable-types