轻松学C++文件操作

无论是读还是写文件都必须要包含头文件 fstream 。

读写文件都有相同的步骤:

创建流对象,打开文件(判断一下是否打开成功),对文件进行读/写操作,关闭文件。

写文件:

    ofstream Sy_sy;//创建流对象

    Sy_sy.open("D:\\CLionProjects\\C++代码文件操作存放点\\sy001.txt",ios::out);//out 为写文件而打开文件,in 为读文件而打开文件
    //打开文件的路径要用绝对路径
    if(!Sy_sy.is_open())
    {
        cout<<"文件打开失败!"<<endl;
        return;
   }
   string s;
    cout<<"开始向文件中输出内容,输入 EOF 结束输入!"<<endl;
    while(getline(cin,s))
    {
        if (s == "EOF")
        {
            cout<<"输入结束!"<<endl;
            break;
        }
        Sy_sy<<s<<endl;
       
   }
    Sy_sy.close();//关闭文件

is_open函数判断文件是否打开成功,如果打开成功返回 true 否则 false;

如果文件路径那里直接写文件名,将会直接创建一个文件。

文件打开方式看下面:

 读文件:

 ifstream Sy_in;
   Sy_in.open("D:\\CLionProjects\\C++代码文件操作存放点\\sy001.txt",ios::in | ios::binary);//打开文件
   if (!Sy_in.is_open())//检查文件是否打开成功                               //可以利用这个操作同时指定多个模式
   {
       cout<<"文件打开失败!请检查文件路径!"<<endl;
       return;
   }
   string s;
   while (getline(Sy_in,s))//第一种方法更为简单
   {
      cout<<s<<endl;
   }

   char buf[1024] = {0};
   while (Sy_in >> buf )//第二种方法利用右移运算符把内容放到 buf中去
   {
       cout<<buf<<endl;
   }

  while (Sy_in.getline(buf,sizeof(buf)))//第三种方法
  {
     cout<<buf<<endl;
  }

  char c;
 while ( (c =Sy_in.get()) != EOF )//第四种方法 EOF 就是文件尾的意思
  {
      cout<<c;
  }
Sy_in.close();

读文件这里介绍了四种方式,找一个自己喜欢的方式就行了。

利用二进制方式读写文件会有些不一样(注意如果用二进制方式写文件,写进文件里面的内容可能会是乱码,但是是正常的)

//二进制写文件
class person{
public :
    char name[64];
    int age;
};
//写文件
void test01(){
    ofstream ofs;
    ofs.open("D:\\CLionProjects\\C++代码文件操作存放点\\sy002.txt",ios::out | ios::binary);//打开文件
    person p = {"张三", 18};
    ofs.write((const char *)&p, sizeof (person));
    ofs.close();
}
//读文件
void test02(){
    ifstream ofs;
    ofs.open("D:\\CLionProjects\\C++代码文件操作存放点\\sy002.txt",ios::in | ios::binary);//打开文件
   if (!ofs.is_open())
   {
       cout<<"文件打开失败"<<endl;
       return ;
   }
   person p;
    ofs.read((char *)&p, sizeof (person));
    cout<<p.name<<"     "<<p.age<<endl;//输出读到的内容
    ofs.close();
}

听课的时候有个注意点,利用二进制方式读写文件,最好用 C 语言的字符串进行操作,用C++的string 可能会出问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

syhk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值