对于我的程序,我必须确保用户仅输入一个正整数。例如,如果用户输入12hi,则不应运行该程序并显示为标准错误。我不太确定如何执行此操作。
int main(int argc, char *argv[])
{
if(atoi(argv[1]) < 1)
{
cerr << "ERROR!"<< endl;
return 1;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我正在检查一些OpenCV教程并在开头找到这一行(这里是链接,代码在CalcHist部分http://opencv.willowgarage.com/documentation/c/histograms.html)
if (argc == 2 && (src = cvLoadImage(argv[1], 1)) != 0)
Run Code Online (Sandbox Code Playgroud)
我以前从未见过这个,真的不明白.我检查了一些有关此主题的问答,但仍然不理解.有人可以向我解释这条线的含义是什么?
谢谢!
如何在Windows下的命令行中访问给予Vim的参数?
我正在寻找相当于argv[]C的.
在linux下你可以阅读/proc/self/cmdline.例:
vim -c ":echo split( readfile( \"/proc/self/cmdline\", 1 )[0], \"\n\" )"
print
[
'vim',
'-c',
':echo split( readfile( "/proc/self/cmdline", 1 )[0], "\n" )'
]
Run Code Online (Sandbox Code Playgroud)
argc()并且argv()不工作.他们只返回文件数量.例:
vim -c ':echo "argc:" . argc() . ", argv:" . string( argv() )' file1 file2
print
argc:2, argv:['file1', 'file2']
Run Code Online (Sandbox Code Playgroud) #include <iostream>
using namespace std;
int main(int argc, char* argv[]) {
int i;
i = 1;
while (i < argc) {
cout << argv[i] << endl;
i = i + 1;
}
}
Run Code Online (Sandbox Code Playgroud)
命令行参数列为bfi
我只是学习argc和argv,但据我所知,argc是从命令行传递的参数数量(本例中为3),而argv是这些参数的数组,在这种情况下为[bfi].所以使用它,我直觉地认为这个循环应该输出argv [1],然后是argv [2],然后终止.因此最终的输出是:
F
一世
但是,给出的解决方案是:
b
F
一世
哪个让我感到困惑.有人能够解释我的思维过程出错吗?
检索argc和argv的标准方法是什么?最佳用法是什么以及如何在linux中执行此操作?
请提供示例.
"我希望有一个复杂的命令行选项,我想在我的应用程序中使用它们"这就是我的意思.
谢谢
我有一个程序从命令行读取一个参数并对其执行某些操作.我正在使用argv和argc.当我未能将参数传递给程序时,它就会出现段错误.我已经尝试检查argc是否不是某个值,然后打印出值,但它仍然是段错误.这是有问题的代码.请注意,它在传递单个参数时按预期工作.这是有问题的代码:
int main(int argc, char *argv[])
{
int numTimes = atoi(argv[1]); //converts content of argv[1] into integer
if(argc != 2)
{
printf("Enter a valid integer.");
}
Run Code Online (Sandbox Code Playgroud) 我有以下程序,我在命令行传递2个参数,如下所示.我期待argc为3,但它打印为6.为什么?
#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;
void usage();
int main(int argc, char *argv[])
{
cout << argc << endl;
if (argc != 3)
usage();
string regex = argv[1];
string searchString = argv[2];
cout << "regex: " << regex << " . searchString: " << searchString << endl;
return 0;
}
void usage()
{
cout << "Usage: ./stringmatch <regex> <searchString>" << endl;
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
命令行:
[jim@cola c++]$ ./stringmatch [yyyy\d\d\d]* yyyy1234
6
Usage: ./stringmatch <regex> <searchString>
Run Code Online (Sandbox Code Playgroud) 我想在CMake中解析/处理传递的控制台参数,所以如果我在控制台中运行它:
cmake -DCMAKE_BUILD_TYPE=Release -DSOME_FLAG=1 ..
Run Code Online (Sandbox Code Playgroud)
我想获得-DCMAKE_BUILD_TYPE=Release和-DSOME_FLAG=1来自这里面的CMake的脚本(通过了所有其他参数)并保存它们的地方.
我想要它的原因是通过自定义CMake脚本(后面调用execute_process(cmake <something>))传递所有参数,例如
cmake -DCMAKE_BUILD_TYPE=Release -P myscript.cmake
Run Code Online (Sandbox Code Playgroud) 我有一个关于计算器的简单示例:
输入第一个操作数,然后输入运算符。如果运算符是一元,则无需输入第二个。因此,打印结果,例如:如果一个数字不需要第二个操作数,则打印平方。
输入可以从命令提示符传递到程序中,否则在程序从输入流启动之后。
我想将输入作为参数传递给程序的原因是我有时想从命令提示符处调用程序,所以我可以发出:calc 57 + 12+输入:我得到69。
该程序运行良好,但是在我使用的平方运算符中,我^可以从输入流(std :: cin)中使用它,但是如果我通过命令提示符传递它,我将无法执行!
int main(int argc, char* argv[]){
int a = 0;
int b = 0;
char op = '\0';
if(argc < 2){
std::cout << "a: ";
std::cin >> a;
std::cout << "op: ";
std::cin >> op;
switch(op){
case '^':
std::cout << a << " ^2 " << " = "
<< a * a << std::endl;
break;
case '+':
std::cout << "b: ";
std::cin >> b;
std::cout << …Run Code Online (Sandbox Code Playgroud)我经常看到人们在程序中输入和argc,但从未使用过这些参数。argvmain
int main(int argc, char *argv[]) {
// never touches any of the parameters
}
Run Code Online (Sandbox Code Playgroud)
我也应该这么做吗?这是什么原因呢?