假设我有一个函数compute_number(float k);
,在我的程序中,我需要调用这个函数一次,并将一些用户输入作为参数。实现格式化输入的直观方法是:
int main()
{
...
float input_numbr;
std::cin >> input_numbr;
compute_number(input_numbr);
...
}
但是,这个问题是我已经声明并使用了一个额外的变量 float input_numbr
,我将永远不会再使用它。我认为这是一种浪费。
所以我的问题是,是否有任何方法可以将这三行缩减为一行。必须有某种方法来规避创建附加变量以从输入流中获取一次性格式化键盘输入的需要。我在想类似的东西:
compute_number(cin.get());
然而,问题是 cin.get() 不格式化输入;它只是返回流中下一个字符的 ASCII 值。
那么有没有办法像这样调用compute_number(cin.next_formatted_input())
?或者必须创建一个额外的变量来临时保存格式化的 cin 值。
最佳答案
The problem with this, though, is that I've declared and used an extra variable float input_numbr which I'll never use again. I think that's a waste.
好吧,我不同意(提倡代码可读性),但是给你:
template<typename T>
T getinput(std::istream& is) {
T result;
is >> result;
return result;
}
应该做你想做的。你可以只写
compute_number(getinput<float>(std::cin));
然后。尽管仍然涉及(并且需要)变量。
关于c++ - 是否可以使用一行代码从 std::cin 中提取格式化输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46780849/