实现一个从输入流中读取一系列值作为参数的函数



在一本c++书中给我的一个问题中,我被告知要创建一个函数,该函数将输入流作为参数,其值是存储在流中的一个序列中的int型。

现在我得到了这样的声明:

foo(istream &arg);

但是我似乎不明白如何在输入流中获取值并将其存储在另一个变量中。有人能帮我一下,给我举个我能理解的简单例子吗?

谢谢。

不清楚你不明白什么。要读取单个值,您在流上使用>>操作符。要读取多个值,您需要多次使用>>;如果你想读取整个流,你可以循环直到输入失败。要存储这些值,可以使用std::vector<int>,使用push_back插入每个值

当然,有经验的c++程序员更可能使用std::istream_iterator<int>直接初始化vector

std::vector<int>
foo( std::istream& inputStream )
{
    return std::vector<int>
        (std::istream_iterator<int>( inputStream )),
        (std::istream_iterator<int>()) );
}
然而,这个问题的目的似乎是学习如何编写循环,因此出于学习目的,您应该编写自己的循环

流使用流操作符,例如:

std::cout << "enter an integer number: ";

int x;
std::cin >> x;

因为这看起来像家庭作业,我就把它留到这里。

你可能猜到std::cin是一个istream(输入流)的例子,而std::cout是一个ostream(输出流)

您想在istream中保留给定的值,还是将它们丢弃(例如等待用户在继续执行程序的另一部分之前按下ENTER键)?

您可能需要std::getline,它将读取所有内容到下一个换行符,并将整个块存储到您可以解析(或丢弃)的字符串中。

如前所述,>>将逐个读取另一个值(通常用空格分隔),因此您可以将第一个输入存储到变量x中,第二个输入存储到变量y中,第三个输入存储到变量z中,等等(如果您想要真正花哨,您甚至可以将它们放入vector, list, deque或您选择的任何其他容器类型)。

相关内容

  • 没有找到相关文章

最新更新