草庐IT

ind_ofstream

全部标签

C++:ofstream 类将文件保存到哪里?

我从Windows迁移到Mac,现在遇到文件输入/输出类问题:ifstream和ofstream。在Windows中使用g++/代码块运行时ofstreamout("output.txt");out将在同一目录中创建一个新文件“output.txt”。但是在MACOSX中,这个文件是在我的主目录中创建的:/Users/USER_NAME/output.txt如何将此文件与可执行文件放在同一目录中?附言我正在使用GCC和CodeBlocks。没有项目-我只是编译一个源文件。 最佳答案 流类与所有其他文件打开函数一样,在您提供相对路径时

c++ - 正确地(独立于 32 位/64 位)将 float 保存到二进制 ofstream

显然在我的机器上,float、double和longdouble各有不同的大小。似乎也没有严格的标准来强制执行每种类型必须有多少字节。然后,如何将浮点值保存到二进制文件中,然后在大小不同的情况下在不同的系统上正确读取它?例如,我的机器有8个字节的double,而乔的有12个字节的double。无需以文本形式导出(例如“0.3232”),也就是说。看起来比二进制表示要紧凑得多。 最佳答案 你必须定义一个格式,并实现它。通常,大多数我知道的网络协议(protocol)使用IEEEfloat和double,输出big-endian(但其他

c++ - exit() 是否刷新并关闭 `ofstream` 对象?

exit(3)表示stdio流已刷新并关闭。但是没有任何关于C++特定的ofstream对象的信息。标准是否保证ofstream对象也被正确刷新和关闭,或者我是否必须以某种方式将退出条件传播到main()并执行返回那里销毁所有自动流? 最佳答案 std::exit()销毁具有静态存储持续时间的对象(从而刷新此类ofstream对象)。它不会销毁具有自动存储持续时间的对象(保留此类ofstream对象未刷新)。是否刷新ofstream取决于它的存储时间。 关于c++-exit()是否刷新并

c++ - 传递 std::ofstream 作为参数时,为什么我要生成 "use of deleted"函数?

这个问题在这里已经有了答案:Whycopyingstringstreamisnotallowed?(3个答案)C++copyastreamobject(5个答案)关闭7年前。我有一个成员是std::ofstreamfBinaryFile和一个voidsetFile(std::ofstream&pBinaryFile){fBinaryFile=pBinaryFile;}输出:Data.h:86:16:error:useofdeletedfunction‘std::basic_ofstream&std::basic_ofstream::operator=(conststd::basic_o

c++ - 按照预期的方式使用迭代器、ifstream、ofstream

我有一个包含一堆单词的txt文件,每行一个。我需要阅读这个文件并将每个单词放在一个列表中然后用户将能够修改此列表完成编辑后,程序会将修改后的列表写入新文件。由于它是面向对象的C++,我将有两个类,一个用于读取/写入文件,一个用于编辑/修改列表和用户。考虑到这种方法,这是我在第一个类中的阅读功能:boolFileMgr::readToList(list&l){if(!input.is_open())returnfalse;stringline;while(!input.eof()){getline(input,line);l.push_back(line);}returntrue;}请记

c++ - 将 ofstream 对象从主程序传递给类

这是我正在尝试做的事情:1)在我的主体中打开一个ofstream对象。我可以做到这一点没问题。2)将此对象与文件名相关联。没问题。3)将此对象传递给类并在此类内发送输出。我做不到。这是我的代码。我将不胜感激任何帮助。谢谢!#include#includeusingnamespacestd;typedefclassObject{public:Object(ofstreamfilein);}Object;Object::Object(ofstreamfilein){filein 最佳答案 您必须通过引用传递流对象:Object::Obj

c++ - 为什么这个编译器错误? - 没有匹配函数调用 'std::basic_ofstream<char>::open(std::string&)'

这适用于VisualStudio,并且适用于一台计算机上的GCC4.9.2。但在不同的计算机上,我认为它是相同的GCC4.9.2编译器,但它给了我这个错误。我错过了什么吗?怎么回事?#include#include#includeusingnamespacestd;intmain(){stringfilename;filename="teststring";ofstreamfout;fout.open(filename);fout.||===Build:Debuginfileiotest(compiler:TDM32GNUGCCCompiler4.9.2dw2)===|F:\Users

c++ - ostream/ofstream 继承问题

我正在编写C++程序,我需要一些帮助来理解错误。默认情况下,我的程序会打印到终端(STDOUT)。但是,如果用户提供文件名,程序将打印到该文件。如果我正在写入终端,我将使用std::cout对象,而如果我正在写入一个文件,我将创建并使用std::ofstream对象。但是,我不想一直检查我是否应该写入终端或文件。由于std::cout和std::ofstream对象都继承自std::ostream类,我想我会创建一种接受std::ostream对象的print_output函数。在调用此函数之前,我会检查是否应该打印到文件中。如果是这样,我将创建std::ofstream对象并将其传递

c++ - 忘记调用 std::ofstream close 函数会导致内存泄漏吗?

我只是好奇这个问题:忘记调用std::ofstreamclose函数会导致内存泄漏吗?我举以下例子来说明我的问题:usingnamespacestd;ofstreammyfile;myfile.open("C:\\report.html");myfile""通常,我们还应该在代码脚本的末尾调用myfile.close()。但是,如果我忘记调用close函数,会发生什么?会不会导致内存泄漏?我用linux中的memcheck和valgrind检查程序,都没有发现内存泄漏。那么不调用close函数会有什么副作用呢。 最佳答案 当您的st

c++ - 更改或检查 std::ofstream 的打开模式

在一些使用std::ofstream执行大量文件i/o的代码中,我正在缓存流以提高效率。但是,有时我需要更改文件的打开模式(例如追加与截断)。这是一些类似的模拟代码:classLogger{public:voidwrite(conststd::string&str,std::ios_base::openmodemode){if(!myStream.is_open)myStream.open(path.c_str(),mode);/*Want:if(myStream.mode!=mode){myStream.close();myStream.open(path.c_str(),mode)