gpt4 book ai didi

c++ - std::istreambuf_iterator 初始化时没有参数?

转载 作者:行者123 更新时间:2023-11-28 00:33:12 26 4
gpt4 key购买 nike

代码如下:

#include <iostream>
#include <fstream>
#include <vector>
#include <iomanip>

std::vector<unsigned char> bytes;
{
std::ifstream in(name, std::ios_base::binary);
bytes.assign(std::istreambuf_iterator<char>(in >> std::noskipws),
std::istreambuf_iterator<char>());
}

根据引用资料,vector.assign 函数接受两个参数,firstlast,并将介于两者之间的任何内容放入 vector 中. istreambuf_iterator 函数采用以下形式:

istreambuf_iterator( std::basic_istream<CharT,Traits>& is );    
istreambuf_iterator( std::basic_streambuf<CharT,Traits>* s );

这些都很容易理解,但是在上面的代码片段中,第二个迭代器初始化器没有参数,这是什么意思?

另外注意bytes的类型是unsigned char,而iterator的类型是char,这不是不匹配吗?

最佳答案

the second iterator initializer takes no arguments, what does it mean?

这意味着它被初始化为流结束迭代器。

Also notice that the type of bytes is unsigned int, while the type of the iterator is char, isn't this a mismatch?

你是说 unsigned char 对吧? (这就是它在您的代码中所说的。)

这很好,因为 unsigned char 可以从 char 构造和赋值。采用迭代器范围的模板函数通常不需要类型完全匹配。 (具体要求见标准§23.2.3表100)

关于c++ - std::istreambuf_iterator<char> 初始化时没有参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22054759/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com