jjzjj

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++ - 使用 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++ - 从 cin 或文件中读取

当我尝试编译代码时istreamin;if(argc==1)in=cin;else{ifstreamifn(argv[1]);in=ifn;}gcc失败,提示operator=是私有(private)的。有什么方法可以根据条件将istream设置为不同的值吗? 最佳答案 您可以为in使用指针,例如:istream*in;ifstreamifn;if(argc==1){in=&cin;}else{ifn.open(argv[1]);in=&ifn;} 关于c++-从cin或文件中读取,我们

c++ - 在 C++ 中仅解析来自 istream 的数字

我有一堆如下所示的输入文件:(8,7,15)(0,0,1)(0,3,2)(0,6,3)(1,0,4)(1,1,5)我需要编写一个函数,一次解析这些输入一个数字,所以我需要能够按数字分隔输入,例如:8,然后是7,然后是15,然后是0,再是0,依此类推.到目前为止,我想到的唯一方法是使用istream.get(),它返回下一个字符的ASCII码,我可以通过将其转换为字符来将其转换回其字符格式。然后我会检查该字符是否为数字(因此忽略括号),但是这样,任何双(或三)位数字一次只能读取一个数字。实现这一目标的最佳方法是什么?顺便说一句,我必须使用istream。这是规范的一部分,我不允许更改谢谢

c++ - 检查是否已从 std::istream 成功读取所有值

假设我有一个文件100text如果我尝试使用ifstream读取2个数字,它将失败,因为text不是数字。使用fscanf我会通过检查它的返回码知道它失败了:if(2!=fscanf(f,"%d%d",&a,&b))printf("failed");但是当使用iostream而不是stdio时,我怎么知道它失败了? 最佳答案 它实际上(如果不是更)简单:ifstreamifs(filename);inta,b;if(!(ifs>>a>>b))cerr顺便说一句,习惯这种格式。因为它非常方便(对于通过循环继续积极进展来说更是如此)。

ios - NSInputStream 与 url 在 iOS 中出现 nil

我正在尝试设置一个NSInputStream,但是当我进入代码时,我的输入流显示为nil。该url来自Dropbox帐户。在我通过DropboxChooser获得url后通过NSData获取文件会使我的iPhone4崩溃(尽管当它通过XCode运行时不会)。文件太大了,所以我想试试NSInputStream。我从IcannotinitializeaNSInputStream看到该网址应该是本地的。知道如何从Dropbox流式传输文件吗?谢谢。-(void)setUpStreamForFile{//iStreamisNSInputStreaminstancevariablealready

c++ - 为什么我们需要在重载 >> 和 << 运算符时返回对 istream/ostream 的引用?

如果我不返回din或dout会发生什么,实际上我正在读一本书,其中作者返回流引用istream&operator>>(istream&din,vector&a){for(inti=0;i>a.v[i];returndin;}ostream&operator 最佳答案 原因是几个事实的结合。您希望能够将输入和输出操作链接起来in>>x>>y;out所以你必须返回允许operator的东西再次。因为您希望运算符(operator)处理任何istream,即从std::istream派生的任何对象,你不能定义operator因为这只适用于

C++ std::istream readsome 不读取任何内容

这就像readsome甚至没有阅读。返回0并且不读取任何字符。这里有什么问题?#include#includeintmain(){std::fstreamstream("list.cpp",std::ios::in);if(stream.good()||!stream.bad()||stream.is_open()){std::cout输出:嗯,流看起来不错。0:大号 最佳答案 咨询areference,Thebehaviorofthisfunctionishighlyimplementation-specific.Forexamp