使用istream_iterator读取多行字符串
Using an istream_iterator to read strings in multiple lines
我想读取以下输入:
Foo 1 2 4
Bar 3 4 5
作为两个独立的"string"对象
是否可以使用istream_iterator来实现?
我在哪里可以找到关于所有这些迭代器的好的文档?
您需要使用getline(): http://www.cplusplus.com/reference/iostream/istream/getline/
我认为您不需要特别使用std::istream_iterator
,因为它不会做您想做的事情。另一个迭代器适合你吗?
#include <iterator>
#include <iostream>
class getline_iterator
: public std::iterator<std::input_iterator_tag, std::string>
{
private:
std::istream* is;
std::string line;
void fetchline() {
if (is && !std::getline(*is, line)) is = 0;
}
public:
getline_iterator(std::istream& is) : is(&is) {
fetchline();
}
getline_iterator() : is(0) { }
std::string operator*() {
return line;
}
getline_iterator& operator++() {
fetchline();
return *this;
}
bool operator==(const getline_iterator& rhs) const {
return (!rhs.is) == (!is);
}
bool operator!=(const getline_iterator& rhs) const {
return !(rhs == *this);
}
};
int main()
{
getline_iterator begin(std::cin);
getline_iterator end;
std::copy(begin, end, std::ostream_iterator<std::string>(std::cout, "n"));
}
EDIT:我错过了第二个问题:"我在哪里可以找到所有这些迭代器的良好文档?"我个人觉得http://cplusplus.com/reference/std/iterator/很有用
相关文章:
- 如何使用Luacneneneba API正确读取字符串和表参数
- 为什么 sscanf 无法从一个字符串中读取uint64_t和字符?
- 如何从字符串C++读取多个整数
- 使用字符串读取的字符串
- 从文件到字符串读取并传递到功能
- C++ cin 将字符串读取到 int 类型中返回 0
- 使用CIN和/或字符串读取带有混合输入的文本文件
- 将两个字符串作为一个字符串读取
- 如何将WCP 1252字符串读取为std::tstring
- 如何将字符串读取为字符串向量或将整数读取为整数向量
- 将一系列字符串读取到char数组中
- 如何在 c++ 中将文件中的段落作为单个字符串读取
- 从 txt 文件中将后缀表达式作为字符串读取
- C++银行项目;如何将一组字符串读取为单独的浮点数并添加它们
- 在 c++ 中循环字符串读取器
- 将字符串读取为命令行参数C++
- 如何在QT中使用QDomDocument对象将字符串读取为XML
- 使用Matio库将.mat文件中的字符串读取到C++中
- 作为字符串读取第一列数据文件
- 如何在字符串读取完成时停止c++的recv() ?