jjzjj

c++ - 失败时 C++ 中的 istream 行为更改

取自:cppreference直到C++11:Ifextractionfails(e.g.ifaletterwasenteredwhereadigitisexpected),valueisleftunmodifiedandfailbitisset.从C++11开始:Ifextractionfails,zeroiswrittentovalueandfailbitisset.Ifextractionresultsinthevaluetoolargeortoosmalltofitinvalue,std::numeric_limits::max()orstd::numeric_limits::

c++ - istream 的 tellg/seekg 无法防止堆栈粉碎(g++)?

对于我正在编写的程序,计算文件大小对我来说很有用,我使用iostream的tellg和seekg函数计算文件大小,但这会导致-Wstack-protector发出警告。以下代码重现了“问题”:#includestd::streamsizeget_file_size(std::ifstream&ifs){//line12(inwarning,below)conststd::streamsizestart=ifs.tellg();ifs.seekg(0,std::ios::end);conststd::streamsizeend=ifs.tellg();ifs.seekg(start);r

c++ - 是否可以同时在两个对象上使用插入运算符?

例如,如果我想在两个对象上使用提取运算符将相同的数据发送到两个对象以获得语法快捷方式(out_file,cout)那么数据同时应用到out_file和cout?out_file是fstream.. 最佳答案 您可以使用boost::iostreams::tee_device将数据发送到一对流.开球.cpp#include#include#include#includeintmain(){typedefboost::iostreams::tee_deviceTee;typedefboost::iostreams::streamTeeS

java - 在 JNI 中连接 C++ istream/ostream 和 Java InputStream/OutputStream

是否有任何现有的C++/JNI库可以在JavaInputStream和C++istream以及JavaOutputStream之间编码访问和C++ostream?特别是,我希望Java应用程序能够将InputStream或OutputStream传递到使用iostreams作为其流接口(interface)的C++库中.如果不存在现有库,我需要在istream/ostream实现中实现的最低功能是什么以支持它?更糟糕的是,我还需要支持seek和tell,尽管原则上我应该能够使用mark、重置,然后跳过以执行我需要的操作。由于这些流可能非常大,我不想简单地将它们加载到ByteArray中

c++ - 可以从 istream_iterator 制作 move_iterator 吗?

考虑以下代码:typedefistream_iteratorchar_itr;char_itreos;stringll("sometexthere");istringstreamline_in(ll);char_itrstart(line_in);move_iteratormstart(start);//!!!move_iteratormeos(eos);vectorvc(mstart,meos);上面的代码由于行(!!!)而无法编译:errorC2440:'return':cannotconvertfrom'constchar'to'char&&'但是,如果您分别用start和eos

C++11 - 从流中删除输入

当我的程序可能需要n行输入来解决下一个问题,然后再开始下一个问题时,我需要丢弃属于旧问题的所有输入行程序可以在读取所有输入之前解决它。当然,我可以简单地循环直到到达新问题的输入,但读取和存储所有这些数据可能会很昂贵。有没有办法简单地告诉输入流忽略下一个如此如此多的值? 最佳答案 voiddiscardLines(std::istream&in,std::size_tcount){if(!in)return;for(autoi=count;i!=0;--i)in.ignore(std::numeric_limits::max(),'\

c++ - istream 没有完全恢复已放入 stringstream 的内容

我使用以下设置:#includeusingnamespacestd;classfoo{public:voidbar(istream&in,intn){vector>q;intx,y,a,b;for(q.clear();in>>x>>y>>a>>b;q.push_back(make_tuple(x,y,a,b)));assert(n==q.size());}};intmain(){stringstreamss;for(inti=0;ibar(ss,100);}事实上,我的代码比这更复杂,但我的想法是将东西(准确地说是longlongint)放入stringstream并调用一个函数,将创

c++ - 指向抽象类的指针 vector ,用于访问派生类成员

我是C++的新手,正在尝试实现一个turtle模拟器,它将从文本文件中读取命令,将它们放在一个vector上并使用glut绘制它们我有节点类、从节点派生的命令类、来自命令的4个派生类(forward、left、right、jump、repeat)和用于存储命令的Prog类。classnode{public:node();virtual~node();virtualvoidRun()=0;};classcommand:publicnode{private:floatv;public:command();command(float);~command();virtualvoidRun();

c++ - 输入流迭代器和异常

几天前我在玩istream迭代器和异常处理,我遇到了这种好奇:#include#include#include#includeusingnamespacestd;intmain(intargc,char*argv[]){if(argc"iss(ifs),iss_end;copy(iss,iss_end,ostream_iterator(cout,"\n"));}catch(constios_base::failure&e){cerr为什么在读取输入文件的最后一个字后总是引发failbit异常? 最佳答案 failbit在读取操作未能

c++ - 我如何在 wxWidgets 中重定向标准输入(istream)?

我正在尝试弄清楚如何将istream重定向到wxwidgets。我能够完成重定向ostream,方法如下(所以你知道我的意思):wxTextCtrl*stdoutctrl=newwxTextCtrl(...);wxStreamToTextRedirectorredirect(stdoutctrl);//Redirectostreamstd::cout我现在已经搜索了一段时间,但我找不到我将istream重定向到某种wx-input(所以“cin”实际上会提示用户通过wxWidgets输入)。 最佳答案 不,没有内置的方法可以做到这一