草庐IT

c++ - 写入 ostream 的常量引用

我正在阅读C++primer。我遇到了以下代码:#include#includeusingnamespacestd;classPrintString{public:PrintString(ostream&o=cout,charc=''):os(o),sep(c){}voidoperator()(conststring&s)const{os此代码有效,但我不知道为什么。以下是我的想法,如果有人能帮助指出我错在哪里,那就太好了......这里,'printer'是一个constPrintString对象,所以它的数据成员是const,所以'printer.os'是对cout的const引用

c++ - 写入二进制文件不起作用

下面的代码编译并成功运行,但在退出时没有任何内容写入文件。文件已创建,在选择注册时它会询问所有详细信息并显示消息注册成功。文件customers.data是空的(文件大小为0kb)。write函数没有将对象写入文件。代码中的所有内容似乎都是正确的。无法识别错误。请帮忙主程序:intmain(){intch;Customercust;fstreamfile;file.open("customers.data",ios::out|ios::app|ios::binary);if(!file){coutLogin"Register"Exit">ch;switch(ch){case1:if(c

c++ - 在输出文件中按类 wfstream 写入波斯语 ( farsi )

我如何使用std::wfstream将波斯语文本(如“خلی♬فارس”)写入文件?我尝试了以下代码,但它不起作用。#include#include#includeintmain(){std::wfstreamf("D:\\test.txt",std::ios::out);std::wstrings1(L"خلیجفارس");f程序运行后文件为空 最佳答案 您可以使用C++11utf-8字符串文字和标准fstream和字符串:#include#includeintmain(){std::fstreamf("D:\\test.txt

c++ - 如何在 C++ 中同时写入和读取 `fstream` 的文件?

我正在尝试将一些文本写入文件,然后仅使用1个fstream对象读取它。我的问题与thisquestion非常相似除了读/写的顺序。他试图先阅读然后写作,而我试图先写作然后阅读。他的代码能读不能写,而我的代码能写不能读。我试过了thesolution从他的问题,但它只适用于读写而不适用于写读。这是我的代码:#include#includeusingnamespacestd;intmain(){fstreamfileObj("file.txt",ios::out|ios::in|ios::app);//writefileObj代码写为sometext至file.txt成功但它不从文件输出任

c++ - 从 c/c++ 应用程序写入 *.doc 或 *.rtf 文件

如何使用C或C++以编程方式写入/生成*.doc文件?是否有(开源/跨平台)库可以做到这一点?如果这不可能,是否可以编写一个*.odt文件然后将其转换为*.doc?提前致谢!编辑:AndersAbel评论说*.rtf文件类型是一个选项,因此也接受对此的任何建议。 最佳答案 Joel有一篇关于此主题的有趣文章:http://www.joelonsoftware.com/items/2008/02/19.html基本上他建议:通过COM使用MSWord创建文档。生成MSWord将加载的另一种格式,例如RTF。RTF的优点是它是一种文本格

c++ - 在计算实验期间将结果写入文件的有效方法

我有一个软件可以执行一组实验(C++)。在不存储结果的情况下,所有实验都需要一分多钟。生成的数据总量等于2.5GB,这太大了,无法在内存中存储到实验结束并在之后写入文件。因此,我将它们分块编写。for(inti=0;i在哪里ofstream输出文件(“数据”);outfile只在最后关闭。然而,当我以4700KB的block(实际上4700/Chunksize=results_experiments元素的大小)的形式编写它们时,实验需要大约50倍的时间(一个多小时......)。这是NotAcceptable,并且使我之前的优化尝试看起来相当愚蠢。特别是因为这些实验再次需要使用许多不同

c++ - 有没有比fseek和fwrite更快的写入方法?

我有1GB的二进制文件,基本上包含相同类型值的3D立方体。使用fseek和fwrite以不同的顺序([x,y,z]或[zx,y])保存这种立方体会花费大量时间。但是其中一个软件包比我的程序快得多。有什么方法可以使文件写入速度比使用fseek/fwrite更快吗? 最佳答案 你不应该在文件io操作的内部循环中使用fseek。为了使写入功能更快,它们会缓存写入。如果你到处寻找,你就会不断地消耗缓存。在内存中执行所有转换-例如在内存中旋转立方体,然后在几个连续的fwrite调用中写入文件。如果您不能在内存中完全转换您的数据,那么在内存中一

c++ - 不写入文件的简单 C++ 程序

这些行是main()的唯一内容:fstreamfile=fstream("test.txt",ios_base::in|ios_base::out);stringword;while(file>>word){cout程序正确输出了文件的内容(是“theangrydog”),但是当我之后打开文件时,它仍然只是说“theangrydog”,而不是像我期望的那样“testingrydog”到。完整程序:#include#include#includeusingnamespacestd;intmain(){fstreamfile=fstream("test.txt",ios_base::in|

c++ - ostream::write 实际写入了多少字节?

假设我向ostream::write发送了一个大缓冲区,但实际上只有它的开始部分成功写入,其余部分没有写入intmain(){std::vectorbuf(64*1000*1000,'a');//64mbytesofdatastd::ofstreamfile("out.txt");file.write(&buf[0],buf.size());//trytowrite64mbytesif(file.bad()){//butsupposeonly10megabytewereavailableondisk//howmanywereactuallywrittentofile???}return

c++ - 检查给定的 ostream 对象是否已写入

我可以查询ostream对象是否已写入吗?对于ostringstream,可以使用if(!myOssObject.str().empty())一般情况如何,例如ofstream或cout或cerr? 最佳答案 一般没有。您可以通过tellp()查看在刷新(发送缓冲数据)之前写入了多少字符(或其他内容):Returnstheoutputpositionindicatorofthecurrentassociatedstreambufobject.cout0){//Thereissomedatawritten}刷新后,这些输出流将忘记它们