Использование Cin и Argv

Как мне объединить cin и argv в скрипте?

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

Как игнорировать cin, если есть аргумент командной строки, или делать cin, если нет аргумента командной строки?

-4

Решение

Предмет 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);
}
}
1

Другие решения

string s;

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

... do stuff here ...
1