草庐IT

istream_iterators

全部标签

c++ - 如何将 istream * 转换为字符串或仅打印它?

连接器/C++的以下函数部分,它返回一个istream*。如果我只是尝试打印它,它会显示十六进制或内存位置,因为它是*​​类型。istream*stream=res->getBlob(1);我试着用这个阅读和打印它:strings;while(getline(*stream,s))cout但这会因访问冲突而崩溃。我可以通过其他方式打印它或将其转换为字符串吗?getline之前stream的值:流0x005f3e88{_Chcount=26806164129143632}std::basic_istream>*所以它似乎对我有效。如果失败,我认为它将为null或0

c++ - Clang 与 gcc std::crbegin with boost::iterator_range

使用libc++的Clang3.8.1编译以下程序:#include#include#include#include#includeintmain(){conststd::vectorv{1,2,3};constautorange=boost::make_iterator_range(v);std::copy(std::crbegin(range),std::crend(range),std::ostream_iterator{std::cout,""});std::cout但是带有libstdc++的gcc6.1.0没有。gcc错误的第一行是:error:nomatchingfunc

c++ - istream (ostream) 与 bool

这是一个读取尽可能多的单词的C++代码尽可能从给定的文本文件开始,直到遇到EOF。stringtext;fstreaminputStream;inputStream.open("filename.txt");while(inputStream>>text)cout我的问题是:将while循环的条件(即inputStream>>text)转换为bool值(即true或false)到底执行了什么过程?我自己对这个问题的回答是:据我了解,inputStream>>text应该返回另一个(文件)输入流。当EOF到达时,流似乎为NULL。NULL可以定义为0,相当于false。我的回答有道理吗?

c++ - istream 对象上的 scanf

注意:我在提问之前看过Whatisthecinanalougusofscanfformattedinput?帖子,但该帖子并没有解决我的问题。该帖子寻求C++方式来完成它,但正如我已经提到的,有时只使用C++方式来完成它是不方便的,我有明确的例子。我正在尝试从istream对象中读取数据,有时仅使用C++风格的方式(例如运算符>>)是不方便的,例如数据是特殊形式123:456所以你必须灌输使':'成为空格(这是非常hacky,而不是scanf中的%d:%d),或者00123你想读取为字符串并转换十进制而不是八进制(与scanf中的%d相反),可能还有许多其他情况。之所以选择istrea

c++ - 在类 C++ 中存储指向 istream 和 ostream 的指针

游戏.h#ifndefGAME_H#defineGAME_H#include#include#include"piece.h"usingnamespacestd;classGame{private:stringwhite;stringblack;stringtitle;istream*in;ostream*out;public:Game();Game(istream&,ostream&);voiddisplay(Colour,short);};#endif游戏.cpp#include#include#include#include"game.h"#include"board.h"#in

c++ - getline 的实现(istream& is, string& str )

我的问题很简单,getline(istream,string)是怎么实现的?如何解决像getline(char*s,streamsizen)这样固定大小的char数组的问题?他们是否使用临时缓冲区和多次调用newchar[length]或其他整洁的结构? 最佳答案 getline(istream&,string&)以读取一行的方式实现。它没有明确的实现;每个库可能彼此不同。可能的实现:istream&getline(istream&stream,string&str){charch;str.clear();while(stream.

c++ - 基于范围的对 <Iterator,Iterator>

我对以下答案有疑问:https://stackoverflow.com/a/15828866/2160256如那里所述,我们不能像这样在BGL中使用基于范围的for:for(autoe:boost::edges(g))//dosomethingwithe然而,here它指出,我们可以重载使用基于范围的语义所需的begin()和end()函数。所以我尝试了:templateIbegin(std::pair&p){returnp.first;}templateIend(std::pair&p){returnp.second;}但是,编译器仍然报错:error:nomatchingfunct

c++ - 使用 istream_iterator 并从标准输入或文件中读取

我正在使用MicrosoftVisualC++编写程序,我希望我的程序使用istream_iterator从标准输入或文件中读取。谷歌搜索互联网并没有显示我认为它必须多么简单。因此,例如,我可以很容易地编写并从标准输入中读取:#include#include#includeusingnamespacestd;intmain(){istream_iteratormy_it(cin);for(;my_it!=istream_iterator();my_it++)printf("%s\n",(*my_it).c_str());}或者我可以写这个并从文件中读取:#include#include

c++ - 虚拟功能 : Iterating over a vector<Base Class> that is populated with subclass objects

简短描述:我正在迭代一个vector,在vector中的每个对象上调用一个虚函数,以执行一系列操作。vector和迭代器一样属于基类。所有的对象都是child。当调用虚函数时,它会执行基类的函数。(真的)长描述:我正在尝试为具有一组行为的生物建模。我的基类是抽象的,只有两个函数(虚拟),所有子类都已覆盖:classBehavior{public:Behavior();~Behavior(void){}virtualvoidexecute(){}virtualBEHAVIOR_TYPEgetType(){returnm_Type;}protected:BEHAVIOR_TYPEm_Typ

c++ - C++11标准中是否规定std::begin(Container&&)返回const_iterator?

这里是相关代码的链接:#include#include#include#includeintmain(){std::vectorv{1,2,3,4,5};autoiter=begin(std::move(v));if(std::is_const::type>::value)std::couthttp://coliru.stacked-crooked.com/a/253c6373befe8e50我遇到这种行为是因为declval()在decltype用std::begin表达.gcc和clang都返回迭代器,这些迭代器在取消引用时会产生const引用。这可能是有道理的,因为右值引用通常绑