Bla*_*ack -4 c++ startup argv argc
我写了这个简单的代码来了解参数系统是如何工作的。我将文本文件拖到.exe文件,并得到2作为输出,而不是我期望的1。为什么是2?Arg 1是.exe本身吗?如何找到参数的文件名?
#include<iostream>
using namespace std;
int main(int argc, char* argv[])
{
int i = 0;
const int max = 100000;
if (argc > 0)
{
cout<< argc <<endl;
}
cin.get(); cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
还有一个问题。我在哪里可以告知如何访问每个参数并使用这些信息。我的目标是打开所有作为参数传递给.exe的文件。
这不是一个重复的问题,我问为什么当您传递1个参数时返回2。链接中的问题是另一个...
argv[0]通常是正在运行的程序的名称,并计入argc。如果是argc >= 2,则第一个文本文件名应位于中argv[1]。您可以简单地遍历它们...
for (size_t i = 1; i < argc; ++i)
if (std::ifstream infile(argv[i]))
...use infile...
else
std::cerr << "ERROR - unable to open " << argv[i] << '\n';
Run Code Online (Sandbox Code Playgroud)
对于更复杂的要求,getopt()如果系统提供了它,则可能要使用et al,或者使用Boost库的等效项。