有没有办法让C++中的'std :: cin'成为'scan()'函数?

Lap*_*pys -1 c++

只是想知道scan()C++中是否有可能有一个函数(比如或者其他)做与std::cin语法相同的事情?

std::cin >> data; // or
scan(data);
Run Code Online (Sandbox Code Playgroud)

Vit*_*meo 6

在C++ 17中,您可以使用可变参数模板折叠表达式来创建一个函数,该函数接受任意数量的参数并cin >> a >> b >> c >> ...为您生成链:

template <typename... Ts>
std::istream& scan(Ts&... xs)
{
    return (std::cin >> ... >> xs);
}
Run Code Online (Sandbox Code Playgroud)

用法:

int i;
double j;
scan(i);
scan(i, j);

if (scan(i, j))
   std::cout << "Read " << i << ", " << j << "\n";
else
   std::cout << "Invalid input\n";
Run Code Online (Sandbox Code Playgroud)

wandbox上的实例