c++ - 使用 istream_iterator 从键盘读取结构 vector ?

标签 c++ vector iostream

是否可以使用 istream_iterator<customstruct>通过读取人类的标准输入来插入 vector ?该结构中包含多种数据类型。

这样做是否有意义,或者分别提示每条数据是否是更好的方法?我问这个只是因为有人要求我这样做,但我认为这不可能/不切实际。

最佳答案

如果“operator >>”重载,istream_iterator 可以读取任何内容,并且它是可复制和可赋值的。

虽然这是可能的,但我认为这不是一种好的阅读方式,因为用户必须手动键入 EOF 序列才能使迭代器结束。

要避免使用EOF,可以让用户输入多条记录,但大多数人在输入之前不太可能知道记录数。

更好的选择可能是按行读取并使用字符串流来获取数据。通过这种方式,您可以在将它们作为数据发送到 stringstream 之前将一些预定义的模式(如空行)识别为输入的结尾。

关于c++ - 使用 istream_iterator 从键盘读取结构 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4300514/

相关文章:

c++ - 如何避免转换运算符调用复制构造函数?

c++ - Windows MSVS 2017 上的 boost::stacktrace

c++ - C - 将指针转换为指向 void 的指针

唯一元素 vector 的 C++ 模板函数

c++ - 流缓冲区之间的 block 级数据复制

c++ - std::cin 在不应该接收输入时接收输入

c# - OSI 第 2 层网络编程

c++ - 从传递给新线程 C++ 的 vector 中删除项目

C++ 测验 : Display Answer Choices with Vector Correct Cycling

c++ - 错误:不匹配 std::operator<<<std::char_traits<char>>(*&std::cout),((const char*) 中的 operator<<