有谁知道在一行中为控制台应用程序提供 3 个用户输入的最佳方法。例如:
(命令“搜索”时间)
Something like this will allow exactly three strings to be written on a line:
std::string line;
std::getline(std::cin, line);
std::istringstream iss(line);
std::string command, param1, param2;
if (!(iss >> command >> param1 >> param2)) {
std::cout << "Missing some input.\n";
} else if (std::cin >> std::ws && std::cin.peek() != EOF) }
std::cout << "Too many parameters.\n";
} else {
std::cout << "Ok.\n";
}
这是另一种方法:重载operator>>
以使其与元组一起使用:
#include <iostream>
#include <tuple>
template<typename T>
T read(std::istream& is)
{
T value;
is >> value;
return value;
}
template<typename... Ts>
std::istream& operator>>(std::istream& is , std::tuple<Ts...>& tuple)
{
tuple = std::make_tuple( read<Ts>(is)... );
return is;
}
它的使用示例可能是:
int main()
{
std::tuple<int,int> tuple;
std::cin >> tuple;
}
这是 ideone 的一个运行示例。