宁波网站建设zj95,智通人才招聘网最新招聘,建设网站服务器自营方式的特点,免费网站自助建站std::fstream使用细节
1.文件不存不支持时打开文件模式不得有ios::in
• 如果文件不存在且打开时包括了ios::in模式则打开文件会失败。
fstream m_f;m_f.open(d://123.csv, ios::in | ios::out | ios::binary);//文件不存在则会打开失败• 我这边尝试行得通的做…std::fstream使用细节
1.文件不存不支持时打开文件模式不得有ios::in
• 如果文件不存在且打开时包括了ios::in模式则打开文件会失败。
fstream m_f;m_f.open(d://123.csv, ios::in | ios::out | ios::binary);//文件不存在则会打开失败
• 我这边尝试行得通的做法是先判断文件是否存在 char* ch d://123.csv;if (0 _access(ch, 0))//文件存在{m_f.open(ch, ios::in | ios::out | ios::binary);//打开文件用于读写文件}else{m_f.open(ch, ios::out | ios::binary);//打开文件用于写文件}if (!m_f.good()){long err errno;//获取系统错误码}2.“”与“”读写文件
• 调用往文件写数据时并不会自动进行分割。
// 写数据到文件
m_f int64_t(1000);
m_f int64_t(2000);
// 从文件读数据
int64_t data 0;
m_f data;//data的结果是10002000也就是底层存的只是字符串连续存两个数都连到一起了。
• 尝试了很多存有换行分隔符的字符串数据使用还挺方便的读数据的话还是getline吧。
// 写文件
string strMsg(有好的使用方法欢迎来交流哈);
m_f strMsg;// 读文件
string strLine;
while( getline(m_f, strLine) )
{//处理strLine
}3.读完之后写不进去了
iostate value (成员常量)标志检查这些标记的函数good()eof()fail()bad()rdstate()goodbit无错误truefalsefalsefalsegoodbiteofbit输入操作时到达文件尾falsetruefalsefalseeofbitfailbitio操作发生逻辑错误falsefalsetruefalsefailbitbadbitio操作发生读写错误falsefalsetruetruebadbit
• 先读文件从头读到尾会使得eofbit被置位这时再往文件里面写数据是写不进去的需要调用clear清空标记位。
#include iostream // std::cout
#include fstream // std::fstreamint main () {char buffer [80];std::fstream myfile;myfile.open (test.txt,std::fstream::in|std::fstream::out);// 读文件string strLine;while( getline(myfile, strLine) ){//处理strLine}//写数据到文件myfile test; //写不进去因为上一步的读触发了end of file 即eof错误标记。需要读之后写一句“myfile.clear()”;myfile.close();return 0;
}