只是想知道在C ++中是否有可能有一个函数(如scan()
或其他)与std::cin
语法做同样的事情?
std::cin >> data; // or
scan(data);
答案 0 :(得分:6)
在C ++ 17中,您可以使用variadic template和fold expression创建一个函数,该函数接受任意数量的参数并为您生成cin >> a >> b >> c >> ...
链:
template <typename... Ts>
std::istream& scan(Ts&... xs)
{
return (std::cin >> ... >> xs);
}
用法:
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";
答案 1 :(得分:1)
如果您只想创建一个为您输入的参数指定值的函数,您可以执行以下操作
void scan( std::string & input )
{
std::string newInput;
cin << newInput;
input = newInput;
}
std::string myString;
scan( myString );
您将被要求输入一个字符串,然后您的输入将被分配给myString。