-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 に答える