cin для аргументов функции без переменной - PullRequest
5 голосов
/ 03 мая 2020

Я хочу передать пользовательский ввод напрямую в функцию без переменной. Сейчас я делаю это:

int temp, len;
cin >> len;
for (int i = 0; i < len; i++){
    cin >> temp;
    foo(temp);
}

Могу ли я сделать это без темп? Может мне не стоит использовать "cin"?

Ответы [ 2 ]

2 голосов
/ 03 мая 2020

Вы все еще можете создать функцию-оболочку:

template <typename T>
T get_input(std::istream& cin)
{
    T res;
    std::cin >> res;
    return res;
}

А затем:

const int len = get_input<int>(std::cin);
for (int i = 0; i < len; i++) {
    foo(get_input<int>(std::cin));
}
0 голосов
/ 03 мая 2020

Нет. Это невозможно. Что вы могли бы сделать, так это поместить функцию ввода внутрь foo(), например:

int foo(bar = null) { // initializing the variable makes it optional
    int temp;
    if (bar == null) {
        std::cin >> temp;
    }
    else {
        temp = bar;
    }

    // put whatever code here

    return temp;
}

int main() {
    int bar = foo();
    return 0;
}

Однако невозможно передать результат оператора ввода непосредственно в функцию в C ++.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...