从std::fstreams以可移植方式获取有意义的文件访问错误消息的最佳方法是什么?badbits和failbits的原始性变得有点烦人。我之前针对win32和POSIX编写了自己的异常层次结构,这比STL的方式灵活得多。我从fstream的向下转换catch(std::exception)的what方法收到“basic::ios_clear”作为错误消息启用了异常。这对我来说意义不大,虽然我知道问题出在哪里,但我希望我的程序能提供更多信息,这样当我几个月后开始部署时,我的生活会更轻松。Boost中有什么东西可以从fstream的实现跨平台和跨STL实现中提取有意义的消息吗?
我正在尝试使用fstream类按顺序从文本文件中读取数据,清除它,然后写入它。我的问题是如何在读取文件后清除文件。我知道我可以同时打开一个文件并清除它,但是我可以在流上调用一些函数来清除它的内容吗? 最佳答案 您应该打开它,执行您的输入操作,然后关闭它并使用std::fstream::trunc标志集重新打开它。#includeintmain(){std::fstreamf;f.open("file",std::fstream::in);//readdataf.close();f.open("file",std::fstream::
我正在尝试使用fstream类按顺序从文本文件中读取数据,清除它,然后写入它。我的问题是如何在读取文件后清除文件。我知道我可以同时打开一个文件并清除它,但是我可以在流上调用一些函数来清除它的内容吗? 最佳答案 您应该打开它,执行您的输入操作,然后关闭它并使用std::fstream::trunc标志集重新打开它。#includeintmain(){std::fstreamf;f.open("file",std::fstream::in);//readdataf.close();f.open("file",std::fstream::
已结束。此问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭6年前。Improvethisquestion我无法解释fstream与oftream之间的不同行为。当我使用fstream时,什么都没有发生,即没有文件被创建:intmain(){std::fstreamfile("myfile.txt");file但是当我将fstream更改为oftream时,
已结束。此问题需要debuggingdetails.它目前不接受答案。编辑问题以包含desiredbehavior,aspecificproblemorerror,andtheshortestcodenecessarytoreproducetheproblem.这将有助于其他人回答问题。关闭6年前。Improvethisquestion我无法解释fstream与oftream之间的不同行为。当我使用fstream时,什么都没有发生,即没有文件被创建:intmain(){std::fstreamfile("myfile.txt");file但是当我将fstream更改为oftream时,
首先对不起我的英语不好。我刚加入这个论坛并搜索如何正确地将vector写入二进制文件。我刚从这个论坛得到一个这样的答案(我已经修改了一点):#include#include#include#includeusingnamespacestd;classStudent{public:charm_name[30];intm_score;public:Student(){}Student(constcharname[],constint&score):m_score(score){strcpy(m_name,name);}voidprint()const{cout.setf(ios::left
首先对不起我的英语不好。我刚加入这个论坛并搜索如何正确地将vector写入二进制文件。我刚从这个论坛得到一个这样的答案(我已经修改了一点):#include#include#include#includeusingnamespacestd;classStudent{public:charm_name[30];intm_score;public:Student(){}Student(constcharname[],constint&score):m_score(score){strcpy(m_name,name);}voidprint()const{cout.setf(ios::left
为什么std::(i|o)fstream类的构造函数和open方法是以constchar*而不是std::string?似乎STL的创建者希望使用他们编写的内容,而不是使用他们编写的类来替换的类型。 最佳答案 库的string部分是在streams之后开发的,没有人想过要进行明显的修改。只是出于政治和时间现实,他们在发布C++98之前从未解决过这个问题,并且没有人会费心再次提出它,因为您总是可以使用.c_str()解决它.C++0x修复了这个问题(参见27.9.1.6)。欢迎使用C++。
为什么std::(i|o)fstream类的构造函数和open方法是以constchar*而不是std::string?似乎STL的创建者希望使用他们编写的内容,而不是使用他们编写的类来替换的类型。 最佳答案 库的string部分是在streams之后开发的,没有人想过要进行明显的修改。只是出于政治和时间现实,他们在发布C++98之前从未解决过这个问题,并且没有人会费心再次提出它,因为您总是可以使用.c_str()解决它.C++0x修复了这个问题(参见27.9.1.6)。欢迎使用C++。
我是否可以将数据从fstream(文件)传输到stringstream(内存中的流)?目前,我使用的是缓冲区,但这需要双倍的内存,因为你需要将数据复制到缓冲区,然后将缓冲区复制到字符串流,直到你删除缓冲区,数据才会复制到内存。std::fstreamfWrite(fName,std::ios::binary|std::ios::in|std::ios::out);fWrite.seekg(0,std::ios::end);//SeektotheendintfLen=fWrite.tellg();//GetlengthoffilefWrite.seekg(0,std::ios::beg)