我试图熟悉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>());
一切顺利。 为什么?有什么区别?