C++ 如何实现Cin<&书信电报;在c++;

C++ 如何实现Cin<&书信电报;在c++;,c++,cin,C++,Cin,是否有人知道在一行中为控制台应用程序提供3个用户输入的最佳方法。 例如: (命令“搜索”时间)类似的内容将允许在一行上写入三个字符串: std::string line; std::getline(std::cin, line); std::istringstream iss(line); std::string command, param1, param2; if (!(iss >> command >> param1 >> param2)) {

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


(命令“搜索”时间)

类似的内容将允许在一行上写入三个字符串:

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";
}
std::字符串行;
std::getline(std::cin,line);
标准::istringstream iss(线);
std::string命令,param1,param2;
如果(!(iss>>命令>>参数1>>参数2)){
std::cout>std::ws&&std::cin.peek()!=EOF)}

std::cout这里有另一种方法:重载
操作符>
使其与元组一起工作

#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;
}
#包括
#包括
模板
T读取(标准::istream&is)
{
T值;
是>>值;
返回值;
}
模板
std::istream和运算符>>(std::istream和is,std::元组和元组)
{
tuple=std::make_tuple(读取(is)…);
回报是;
}
其使用的一个例子可以是:

int main()
{
    std::tuple<int,int> tuple;

    std::cin >> tuple;
}
intmain()
{
std::tuple;
std::cin>>元组;
}

是ideone的一个运行示例。

使用
std::getline
,然后解析。@Kerreck,使用它三次?输入的每一部分都传递给一个变量,它得到整行。如果你想要一行,就用一次。@KerrekSB,谢谢,我知道如何使用getline函数。@jrock,谢谢。这非常有用。祝你度过愉快的一天。