std::istreambuf_iterator

来自cppreference.com
< cpp‎ | iterator

定义于头文件 <iterator>
template< class CharT, class Traits = std::char_traits<CharT> >

class istreambuf_iterator : public std::iterator< std::input_iterator_tag,
                                                  CharT,
                                                  typename Traits::off_type,
                                                  /* unspecified, usually CharT* */,

                                                  CharT >
std::istreambuf_iterator是读取连续的字符std::basic_streambuf对象,它构建了一个单通输入迭代器。实际的读操作时执行的迭代器是递增的,而不是当它被废弃。该迭代器时建造或完成的第一个间接引用,可以读出的第一个字符。否则,只提领返回最近读的字符的副本.
原文:
std::istreambuf_iterator is a single-pass input iterator that reads successive characters from the std::basic_streambuf object for which it was constructed. The actual read operation is performed when the iterator is incremented, not when it is dereferenced. The first character may be read when the iterator is constructed or when the first dereferencing is done. Otherwise, dereferencing only returns a copy of the most recently read character.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
被称为“流”迭代器的默认构造std::istreambuf_iterator。当一个有效的std::istreambuf_iterator达到基础流的结束,它变得等于最终的流迭代器。提领或递增的进一步调用未定义的行为.
原文:
The default-constructed std::istreambuf_iterator is known as the end-of-stream iterator. When a valid std::istreambuf_iterator reaches the end of the underlying stream, it becomes equal to the end-of-stream iterator. Dereferencing or incrementing it further invokes undefined behavior.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
std::istreambuf_iterator有一个简单的拷贝构造函数,一个constexpr的默认构造函数,一个平凡的析构函数.
原文:
std::istreambuf_iterator has a trivial copy constructor, a constexpr default constructor, and a trivial destructor.
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

目录

[编辑] 会员类型

会员类型
原文:
Member type
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
Definition
char_type CharT
traits_type Traits
int_type typename traits::int_type
streambuf_type std::basic_streambuf<CharT, Traits>
istream_type std::basic_istream<CharT, Traits>

[编辑] 成员函数

构造一个新istreambuf_iterator
原文:
constructs a new istreambuf_iterator
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)
(析构函数)
(隐式声明)
destructs an istreambuf_iterator
(公开成员函数)
获得的电流的副本character
accesses的当前字符的成员,如果CharT有成员
原文:
obtains a copy of the current character
accesses a member of the current character, if CharT has members
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)
推进istreambuf_iterator
原文:
advances the istreambuf_iterator
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)
如果两个istreambuf_iterators是流结束或如果两者都有效的测试
原文:
tests if both istreambuf_iterators are end-of-stream or if both are valid
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数)

[编辑] 非成员函数

比较2 istreambuf_iterators
原文:
compares two istreambuf_iterators
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(函数模板)

[编辑] 成员类型

成员类型 定义
value_type CharT
difference_type Traits::off_type
pointer /* unspecified, usually CharT* */
reference CharT
iterator_category std::input_iterator_tag

注意:在 C++17 前,这些成员类型要求通过从 std::iterator<std::input_iterator_tag,CharT,Traits::off_type,/* unspecified, usually CharT* */,CharT> 继承而获得。

[编辑] 示例

#include <vector>
#include <sstream>
#include <iostream>
#include <iterator>
int main()
{
    // typical use case: an input stream represented as a pair of iterators
    std::istringstream in("Hello, world");
    std::vector<char> v( (std::istreambuf_iterator<char>(in)),
                          std::istreambuf_iterator<char>() );
    std::cout << "v has " << v.size() << " bytes. ";
    v.push_back('\0');
    std::cout << "it holds \"" << &v[0] << "\"\n";
 
 
    // demonstration of the single-pass nature
    std::istringstream s("abc");
    std::istreambuf_iterator<char> i1(s), i2(s);
    std::cout << "i1 returns " << *i1 << '\n'
              << "i2 returns " << *i2 << '\n';
    ++i1;
    std::cout << "after incrementing i1, but not i2\n"
              << "i1 returns " << *i1 << '\n'
              << "i2 returns " << *i2 << '\n';
    ++i2; // this makes the apparent value of *i2 to jump from 'a' to 'c'
    std::cout << "after incrementing i2, but not i1\n"
              << "i1 returns " << *i1 << '\n'
              << "i2 returns " << *i2 << '\n';
 
}

输出:

v has 12 bytes. it holds "Hello, world"
i1 returns a
i2 returns a
after incrementing i1, but not i2
i1 returns b
i2 returns a
after incrementing i2, but not i1
i1 returns b
i2 returns c

[编辑] 另请参阅

写入 std::basic_streambuf 的输出迭代器
(类模板) [编辑]
std::basic_istream 读取的输入迭代器
(类模板) [编辑]