【发布时间】:2017-04-03 12:03:17
【问题描述】:
我需要根据先前输入确定的可修改数量的变量在一行中获取输入。
如果你在前面的函数中得到的输入是 1,那么代码会是这样的
std::string istring;
std::getline(std::cin, istring);
std::istringstream stream(istring);
while (stream >> a)
{
statement;
}
是否可以根据您的输入为 while 循环创建一个条件?所以如果输入是例如 5,它的行为就像
while (stream >> a >> a >> a >> a >> a)
{
statement;
}
我尝试过 while ((stream>>a)*number) 但这不起作用
【问题讨论】:
-
一定要使用
istringstream吗?因为您也可以只创建一个字符串数组,例如:std::vector<std::string> istring并在 for 循环中使用std::getline。 -
每一行应该有多个输入变量。早些时候,程序会询问它将获取信息的人数,因此如果该数字是例如 3,那么每一行应该看起来像“1 2 3”或“3 4 5”等等。行数是任意的,但每行中的变量数取决于从先前输入确定的人数
-
我希望你在那个语句中实际上没有
a5 次,而是你有不同的变量? -
实际上,据我所知,无论是 (stream>>a>>a>>a) 还是 (stream>>a>>b>>c),程序的行为都没有区别...但这不是让我感到困扰的事情
-
@SanderDeDycker 序列点参数不适用于此处。只要
a只是一个变量,操作的顺序是明确定义的。请记住,<<扩展为下面的嵌套函数调用,必须以固定顺序执行。唯一未定义的是这些调用的参数评估顺序,但由于您直接传递变量a,因此不需要评估参数。您在此处为多个函数调用重用同一个变量这一事实并没有改变这一点。
标签: c++ istringstream sstream