如何实现Cin<<用c ++中的空格

时间:2013-09-11 15:14:26

标签: c++ cin

有没有人知道在控制台应用程序的一行上有3个用户输入的最佳方法。 例如:

(命令“搜索”时间)

2 个答案:

答案 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的一个运行示例。