jjzjj

ofstream

全部标签

c++ - ofstream::open 什么时候会失败?

我正在尝试使用C++进行文件处理的try、catch、throw语句,并且我编写了一个虚拟代码来捕获所有错误。我的问题是为了检查我是否正确,我需要发生错误。现在我可以通过简单地不在目录中创建所需名称的文件来轻松检查infile.fail()。但是我将如何检查outfile.fail()是否相同(outfile是ofstream其中infile是ifstream)。在哪种情况下,outfile.fail()的值是否为真?示例代码[来自对unapersson答案的评论,简化以使问题更清晰-zack]:#includeusingstd::ofstream;intmain(){ofstream

c++ - 避免在写入文件时覆盖现有文件的内容

我正在尝试制作一个将高分实现为.txt文件的游戏。我的问题是:当我发表如下声明时:ofstreamfout("filename.txt");这会创建一个具有该名称的文件,还是只查找具有该名称的文件?问题是,每当我重新启动程序并做出以下声明时:fout它会覆盖我以前的分数!有什么办法可以让我在写入文件时新分数不会覆盖旧分数? 最佳答案 std::ofstream默认创建一个新文件。您必须使用appendparameter创建文件.ofstreamfout("filename.txt",ios::app);

c++ - 避免在写入文件时覆盖现有文件的内容

我正在尝试制作一个将高分实现为.txt文件的游戏。我的问题是:当我发表如下声明时:ofstreamfout("filename.txt");这会创建一个具有该名称的文件,还是只查找具有该名称的文件?问题是,每当我重新启动程序并做出以下声明时:fout它会覆盖我以前的分数!有什么办法可以让我在写入文件时新分数不会覆盖旧分数? 最佳答案 std::ofstream默认创建一个新文件。您必须使用appendparameter创建文件.ofstreamfout("filename.txt",ios::app);

c++ - 如何在 ofstream 上进行 fsync?

我想确保已将ofstream写入磁盘设备。这样做的可移植方式是什么(在POSIX系统上可移植)?如果我在read-only附加模式中单独open文件以获取文件描述符并调用fsync是否可以解决问题它?像这样:ofstreamout(filename);/*...writecontentintoout...*/out.close();intfd=open(filename,O_APPEND);fsync(fd);close(fd); 最佳答案 如果您能够使用Boost,请尝试使用基于file_descriptor_sink的流,例如:

c++ - 如何在 ofstream 上进行 fsync?

我想确保已将ofstream写入磁盘设备。这样做的可移植方式是什么(在POSIX系统上可移植)?如果我在read-only附加模式中单独open文件以获取文件描述符并调用fsync是否可以解决问题它?像这样:ofstreamout(filename);/*...writecontentintoout...*/out.close();intfd=open(filename,O_APPEND);fsync(fd);close(fd); 最佳答案 如果您能够使用Boost,请尝试使用基于file_descriptor_sink的流,例如:

c++ - 当 fail() 为真时检测无法打开 ofstream 的原因

看起来应该很简单,但我在网上搜索中没有找到。我有一个ofstream,它是open(),而fail()现在是true。我想知道打开失败的原因,比如errno我会做sys_errlist[errno]. 最佳答案 strerror函数来自可能有用。这不一定是标准的或可移植的,但它适用于我在Ubuntu机器上使用GCC:#includeusingstd::cout;#includeusingstd::ofstream;#includeusingstd::strerror;#includeintmain(){ofstreamfout("r

c++ - 当 fail() 为真时检测无法打开 ofstream 的原因

看起来应该很简单,但我在网上搜索中没有找到。我有一个ofstream,它是open(),而fail()现在是true。我想知道打开失败的原因,比如errno我会做sys_errlist[errno]. 最佳答案 strerror函数来自可能有用。这不一定是标准的或可移植的,但它适用于我在Ubuntu机器上使用GCC:#includeusingstd::cout;#includeusingstd::ofstream;#includeusingstd::strerror;#includeintmain(){ofstreamfout("r

c++ - 我可以使用 CreateFile,但将句柄强制为 std::ofstream 吗?

是否有任何方法可以利用Win32API中的文件创建标志,例如FILE_FLAG_DELETE_ON_CLOSE或FILE_FLAG_WRITE_THROUGH,如此处所述http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx,但随后强制该句柄进入std::ofstream?ofstream的接口(interface)显然是平台无关的;我想在“幕后”中强制一些平台相关设置。 最佳答案 可以将C++std::ofstream附加到Windows文件句柄。以下代码在VS20

c++ - 我可以使用 CreateFile,但将句柄强制为 std::ofstream 吗?

是否有任何方法可以利用Win32API中的文件创建标志,例如FILE_FLAG_DELETE_ON_CLOSE或FILE_FLAG_WRITE_THROUGH,如此处所述http://msdn.microsoft.com/en-us/library/aa363858(VS.85).aspx,但随后强制该句柄进入std::ofstream?ofstream的接口(interface)显然是平台无关的;我想在“幕后”中强制一些平台相关设置。 最佳答案 可以将C++std::ofstream附加到Windows文件句柄。以下代码在VS20

c++ - 如何轻松地将输出缩进到 ofstream?

有没有一种简单的方法可以将输出缩进到ofstream对象?我有一个空终止并包含换行符的C++字符数组。我想将其输出到流中,但每行缩进两个空格。是否有一种简单的方法可以使用流操纵器来执行此操作,例如您可以使用流的特殊指令更改整数输出的基数,还是我必须手动处理数组并在检测到的每个换行符处手动插入额外的空格?似乎string::right()操纵器已接近:http://www.cplusplus.com/reference/iostream/manipulators/right/谢谢。-威廉 最佳答案 这是使用构面的完美情况。codecv