1、创建流对象,打开文件
void open( class="superseo">const char *filename );
void open( const char *filename, openmode mode );
filename 文件名
mode:打开模式
ios::app 添加输出
ios::ate 当已打开时寻找到EOF
ios::binary 以二进制模式打开文件
ios::in 为读取打开文件
ios::out 为写入打开文件
ios::trunc 覆盖存在的文件
strace ./a.out
ifstream 类的默认mode
以只读方式ios::in打开文件,文件不存在则打开失败 r
ofstream 类的默认mode
以只写方式ios::out打开文件,文件不存在则创建,存在则清空 w
fstream 类的默认mode
以读写方式ios::in|ios::out打开文件,文件不存在则失败 r+
注意:这些打开模式单独使用和混合使用时功能上有删减,不是简单的相加,具体混合使用后的功能需要通过strace追踪底层调用open函数时对应的flag标志位
注意:可以使用创建类时初始化进行打开文件,效果等同于调用open成员函数,参数与open一样
ifstream ifs.open("test.txt");
ifstream ifs("test.txt");
2、判断文件是否打开成功
bool good();
功能:判断上一次流对象的 *** 作是否成功,可以用于判断文件是否打开成功
返回值:
true 成功
false 失败
bool fail();
功能:判断上一次流对象的 *** 作是否失败,可以用于判断文件是否打开成功
返回值:
true 失败
false 成功
3、流对象 << 写操作 流对象 >> 读 *** 作
ofs << str << endl;
ifs >> str;
4、关闭文件
void close();
注意:在读写类对象时,由于绝大多数成员都是private属性,因此不能在类外直接进行读写;但由于ostream/ifstream类是ofstream/ifstream的父类,因此重载实现<< 和 >> 运算符函数既可以用于输入输出对象,也可以用于类对象的文本文件的读写
读:
#include
#include
using namespace std;
int main(int argc,const char* argv[])
{
ifstream ifs("test.txt");
if(ifs.good())
cout << "文件打开成功" << endl;
else
cout << "文件打开失败" << endl;
string str;
double f;
ifs >> str >> f;
cout << str << "---" << f << endl;
ifs.close();
}
写:
#include
#include
using namespace std;
int main(int argc,const char* argv[])
{
ofstream ofs("test.txt");
if(ofs.good())
cout << "文件打开成功" << endl;
else
cout << "文件打开失败" << endl;
ofs << "你好" << endl;
ofs.close();
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)