草庐IT

istream_iterators

全部标签

c++ - boost::lexical_cast 无法识别重载的 istream 运算符

我有以下代码:#include#includestructvec2_t{floatx;floaty;};std::istream&operator>>(std::istream&istream,vec2_t&v){istream>>v.x>>v.y;returnistream;}intmain(){autov=boost::lexical_cast("1231.2152.9");std::cout我从Boost收到以下编译错误:Error1errorC2338:Targettypeisneitherstd::istreamablenorstd::wistreamable这看起来很简单,

c++ - 为什么fstream不利用operator>>的istream原型(prototype)?

我有一个使用友元函数重载运算符的类>>。重载运算符方法在标准cin使用上测试得很好。但是,当我尝试将代码升级为使用ifstream对象而不是istream对象时,原型(prototype)未被识别为有效方法。我的理解是ifstream继承自istream,因此,多态性应该允许ifstream对象与istream重载函数一起操作。我的理解有什么问题吗?是否有必要为每种输入流类型复制函数?类:#include#include#includeusingnamespacestd;classHospital{public:Hospital(std::stringname);std::string

c++ - 为什么迭代器在 VS2010 中导致调试非常缓慢,即使 _HAS_ITERATOR_DEBUGGING、_SECURE_SCL、_SECURE_SCL_THROWS 设置为 0

我一直试图找出为什么在Debug模式下调试我们的程序需要这么长时间。在使用xperf查看堆栈的样子后,很明显我们在迭代器和STL容器上花费了大量时间。我在谷歌上搜索了一会儿,找到了选项_HAS_ITERATOR_DEBUGGING=0_SECURE_SCL=0_SECURE_SCL_THROWS=0我用#define在代码中设置所有这些#define_HAS_ITERATOR_DEBUGGING0#define_SECURE_SCL0#define_SECURE_SCL_THROWS0但这似乎没有用,所以我尝试使用visualstudio项目中的预处理器定义,但似乎仍然没有帮助。我已经

c++ - std::multiset::iterator = NULL 不再有效?

我有一些代码正在使用gcc4.7(从3.1)更新到C++11我有一个multiset定义为一个类的私有(private)成员:multisetobjects_;代码中有一段看起来像这样(p_q是一对多集迭代器,对那句讨厌的行感到抱歉,迫不及待地想用auto替换它,哈哈):voidTerrain::removeObject(Object*obj){pair::iterator,multiset::iterator>p_q;multiset::iteratorp,q;q=NULL;p_q=objects_.equal_range(obj);for(p=p_q.first;p!=p_q.se

C++ - 将 istream_iterator 与 wstringstream 一起使用

我正在尝试为我编写的程序添加Unicode支持。我的ASCII代码已编译并具有以下几行:std::stringstreamstream("abc");std::istream_iteratorit(stream);我将其转换为:std::wstringstreamstream(L"abc");std::istream_iteratorit(stream);我在istream_iterator构造函数中得到以下错误:errorC2664:'voidstd::vector::push_back(std::basic_string&&)':cannotconvertparameter1fro

c++ - 从 std::ostream_iterator 调用时未找到运算符 << 的重载?

这个程序//main.cpp#include#include#include#include#includetemplatestd::ostream&operator&pair){returnos";}intmain(){std::mapmap={{1,2},{2,3}};std::cout>(std::cout,""));//thisdoesn'twork}产生错误nomatchfor‘operator>::ostream_type{akastd::basic_ostream}’and‘conststd::pair’)我猜这是行不通的,因为我的重载在std::copy中不可用,但这是

C++从istream读取int,检测溢出

如果我使用>>运算符从istream中读取一个整数,并且表示的整数大于INT_MAX,则该操作只返回INT_MAX。我目前正在与INT_MAX进行比较以检测溢出,但如果输入操作“2147483647”,那么它会返回一个错误,而实际上没有错误,结果是有效的。例子:http://ideone.com/4bXyGd#include#include#includeintmain(){std::istringstreamst("1234567890123");//Trywith2147483647intresult;st>>result;if(result==INT_MAX)std::cout在

c++ - 为什么 ranges::ostream_iterator 是默认可构造的?

这个问题遵循评论中的讨论here.在EricNiebler的ranges-v3library中(这有点成为C++20标准的一部分),ranges::ostream_iterator是default-constructible-没有ostream。怎么会?我认为后来有效构造的“虚拟”构造是C++中的反模式,我们正在逐渐摆脱这种缺陷。std::ostream迭代器canonlybeconstructedwithastream(目前-在C++20之前)。似乎我们可以用默认构造的range::ostream_iterator做任何事情...所以,这是怎么回事? 最佳

c++ - istream 中的 getline 和 basic_string 中的 getline

stringtext;getline(text.c_str(),256);1)我收到错误消息“错误:没有匹配函数来调用‘getline(constchar*,int)”上面有什么问题,因为text.c_str()也返回一个指向字符数组的指针。如果我这样写chartext[256]cin.getline(text,256,'\n');它工作正常。cin.getline和getline有什么区别?2)怎么会textstring;getline(cin,text,'\n')接受整行作为输入。这个字符数组的指针在哪里? 最佳答案 text.

python ‘float‘object is not iterable

目录Python'float'objectisnotiterable错误背景错误示例错误解决方法结论应用场景错误解决方法介绍迭代(Iteration)迭代的工作方式迭代可迭代对象迭代其他数据结构自定义可迭代对象Python'float'objectisnotiterable在Python中,​​'float'objectisnotiterable​​是一个常见的错误消息。它在迭代(iteration)过程中表示发生了错误,因为我们试图对浮点数进行迭代操作,但是浮点数是不可迭代的。错误背景在Python中,可迭代对象(iterable)是一种能够被遍历(iterating)的数据类型,例如列表(