有没有人知道在控制台应用程序的一行上有3个用户输入的最佳方法。 例如:
(命令“搜索”时间)
答案 0 :(得分:2)
这样的东西将允许在一行上写下三个字符串:
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";
}
答案 1 :(得分:1)
以下是另一种方法:重载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;
}
Here是ideone的一个运行示例。