1

有谁知道在一行中为控制台应用程序提供 3 个用户输入的最佳方法。例如:

(命令“搜索”时间)

4

2 回答 2

2

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";
}
于 2013-09-11T15:28:45.363 回答
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;
}

是 ideone 的一个运行示例。

于 2013-09-11T15:59:08.620 回答