c++ - 是否可以使用一行代码从 std::cin 中提取格式化输入?

标签 c++ stream

假设我有一个函数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/

相关文章:

c++ - 为什么我需要在这个函数中使用指向指针的指针而不是其他任何地方?

c++ - 创建指向类的指针的函数

c++ - 为什么我不能将 this 指针显式传递给成员函数?

c++ - 在所有 std::futures 完成之前从函数返回是否安全?

android - 如何捕获或重新路由导航语音流

C语言复制文件函数

c++ - C++ 模板可以用于条件代码包含吗?

c++ - 在 C++ 中 << 和 >> 之间的运行时切换

Java: "Listening"到数据流

opengl - RenderMonkey 在 GLSL 的 TEXCOORD 流映射中是否有错误?