使用流迭代器初始化向量

时间:2017-03-21 13:20:58

标签: c++ vector stringstream

我试图熟悉std流:)。 我想使用std :: istreambuf_iterator从流初始化vector。考虑一下我们有一些流:

std::string str("Bla-bla bla-bla-bla");
std::stringstream str_s(str);

当我尝试像这样初始化矢量时:

std::vector<char> vec(std::istreambuf_iterator<char>(str_s), std::istreambuf_iterator<char>());

VC编译器不会将vec视为类std::vector<char>的对象。所以,如果我写:

vec.size()

我会收到编译错误。类似于:&#34; .size左侧的表达式必须是类/结构等的对象。 但是如果我在第一个参数周围添加额外的括号到向量初始化。像这样:

std::vector<char> vec1((std::istreambuf_iterator<char>(str_s)), std::istreambuf_iterator<char>());

一切顺利。 为什么?有什么区别?

0 个答案:

没有答案