如何读取C ++中作为参数的输入文件

时间:2016-01-30 06:15:11

标签: c++ input

我刚刚练习编码C ++。我在Java中知道,我们可以有一个公共main方法,它可以读取输入文件名作为字符串数组参数的参数。但我想知道我是如何在C ++中执行相同的任务的?

3 个答案:

答案 0 :(得分:1)

Java和C ++都遵循相同的C语法。所以它与你在Java中的不同之处并没有什么不同。在Java中,你有一个字符串类:

class Test {
  public static void main(String args[]) {
    for(int i = 0; i < args.length; i++)
      System.out.println("Argument " + i + " = " + args[i]);
  }
}

C / C ++主要使用原始字符数组来存储字符串。虽然标准模板库也提供了字符串类,但C ++使用本机字符数组来存储命令行参数。 main函数有两个变量:

int argc:命令行参数的数量 char * argv []:一个字符串数组

你也可以说它可以写成char ** argv,因为C / C ++中二维数组的底层表示,但两者意味着相同的事情。 C ++中上述代码的等价物是:

#include <iostream>

int main(int argc, char *argv[]) {
  for(int i = 0; i < argc; i++)
    std::cout << "Argument " << i << " = "
         << argv[i] << std::endl;

  return 0;
}

答案 1 :(得分:0)

你这样做的方法略有不同,因为C数组不存储它们的长度,所以它作为一个单独的参数传递。

int main(int argc, char** argv) {
    // Read args from argv, up to argc args.
    // argv[0] is the name of the program
    // argv[1] is the first argument
}

答案 2 :(得分:0)

main函数为您提供参数计数和实际参数作为字符数组的数组。

要安全地使用此功能,您应首先将此信息转换为std::vector<std::string>

#include <string>
#include <vector>

int main(int argc, char *argv[]) {
    std::vector<std::string> arguments;
    for (int index = 0; index < argc; ++index) {
        arguments.push_back(argv[index]);
    }
}

您会注意到arguments[0]等于可执行文件的文件名(理论上,这取决于您使用的系统)。如果您在Windows上并且具有名为stackoverflow.exe的可执行文件,则使用

启动它
stackoverflow.exe one two

会导致arguments包含{ "stackoverflow.exe""one""two" }