-3

如何在脚本中结合 cin 和 argv?

int main(int argc, char* argv[])
c == argv[1];
cin >> c;

如果有命令行参数,你如何忽略 cin,或者如果没有命令行参数,你如何做 cin?

4

2 回答 2

1
string s;

if(argc == 2) 
    s = argv[1];
else
    cin >> s;

... do stuff here ...
于 2012-11-29T03:14:08.063 回答
1

类的对象std::cin和对象std::ifstream都共享一个共同的基类:std::istream. 您可以使用这个事实将其中一个cin或一个传递ifstream给一个通用函数:

void DoOne(std::istream& in) {
  int x;
  in >> x; // etc etc
}

int main (int ac, char **av) {
  if(ac == 1)
    DoOne(std::cin);
  else {
    for(i = 1; i < ac; ++i) {
      std::ifstream inFile(av[i]);
      DoOne(inFile);
    }
}
于 2012-11-29T03:15:35.377 回答