正如我们在C中所知,我们有类iostream,它继承自istream(basic_istream)和ostream(basic_ostream).在您可以找到的每本C书中,使用iostream类对象,您可以读取和写入同一个流.但我真的没有看到任何解释或例子来理解为什么我应该使用这样一个奇怪的想法.我真的不知道为什么我需要写一些流而不是从它读取:(.
当我需要这样的建筑时,你能解释一下吗?我认为必须有使用这种结构的严重理由(不要忘记只有iostream声明我们使用虚拟继承和多重继承).
此外,当我尝试编写一个简单的代码,即使用fsteram(iostream的衍生物)时,我发现它不能正常工作,我期待它.这是我的代码:
#include <fstream> using namespace std; int main() { fstream fstr("somefile.txt",fstream::in|fstream::out);//fstream is deriveted from iosteram int n; fstr>>n;//reading n (WORKS FINE !!!). fstr.flush(); //trying to print Hello to the same file fstr<<"Hello"<<endl;// NOT WORKING!!!!!!! fstr.flush(); return 0; }
所以你能告诉我为什么这段代码可以从文件中读取并且无法写入内容吗?
恢复:
请告诉我为什么我们需要类iosteram以及为什么isteram和ostream没有使用以及如何使用它.
谢谢,抱歉我的英语:).
附:可能这个问题是原始的,但请回答我.
编辑:我的代码现在正在运行.感谢Murka.
解决方法
您可能希望读取和写入相同的流,因为流执行类型转换,如std :: stringstream.您还可以对允许读取和写入的数据源进行iostream抽象,例如套接字或内存缓冲区.