C++读写文本文件 08 20 2024

4.1 写文件

步骤如下:

  1. 包含头文件

    #include<fstream>

  2. 创建流对象:

    ofstream os1;

  3. 打开文件:

    of1.open("path",打开方式);

  4. 输出数据:

    of1<<"data";

  5. 关闭文件:

    of1.close();

打开方式 解释
ios::in 读文件方式打开文件
ios::out 写文件方式打开文件
ios::ate 初始位置为文件尾
ios::app 追加方式写文件(常用)
ios::trunc 如果文件存在,先删除,再创建
ios::binary 二进制方式

**注意:**文件打开方式可以用位或操作符配合使用,如: ios:in | ios:binary

复制代码
#include <fstream>
#include <iostream>
using namespace std;
 
int main ()
{
    
   char data[100];
 
   // 以写模式打开文件
   ofstream outfile;
   outfile.open("afile.dat");
 
   cout << "Writing to the file" << endl;
   cout << "Enter your name: "; 
   cin.getline(data, 100);
 
   // 向文件写入用户输入的数据
   outfile << data << endl;
 
   cout << "Enter your age: "; 
   cin >> data;
   cin.ignore();
   
   // 再次向文件写入用户输入的数据
   outfile << data << endl;
 
   // 关闭打开的文件
   outfile.close();
 
   // 以读模式打开文件
   ifstream infile; 
   infile.open("afile.dat"); 
 
   cout << "Reading from the file" << endl; 
   infile >> data; 
 
   // 在屏幕上写入数据
   cout << data << endl;
   
   // 再次从文件读取数据,并显示它
   infile >> data; 
   cout << data << endl; 
 
   // 关闭打开的文件
   infile.close();
 
   return 0;
}

4.2 读文件

步骤如下:

  1. 包含头文件

    #include<fstream>

  2. 创建流对象:

    ifstream ifs1;

  3. 打开文件并判断是否打开成功:

    ifs1.open("path",打开方式);

  4. 读数据:

    四种方式读取;

  5. 关闭文件:

    ifs1.close();

复制代码
#include<iostream>
#include<fstream>
void test01()
{
    ifstream ifs;
    ifs.open("test.txt",ios::in);
    //如果打开失败
    if(!ifs.isopen())
    {
        cout<<"文件打开失败"<<endl;
        return;
    }
    //读数据
    //第一种方式:将所有的空格当做终止条件,没有办法输出空格信息了,空格都被endl回车代替了
    char buff[1024] = { 0 };
    while (ifs >> buff)
    {
        cout << buff<<endl;
    }
    //第二种方式:利用<string>中getline函数 包含头文件<string>
    string buff;
    while(getline(ifs,buff))
    {
        cout<<buff<<endl;
    }
    //第三种方式:利用ifs对象的getline方法来实现
    char buff[1024]={0};
    while(ifs.getline(buff,sizeof(buff)))
    {
        cout<<buff<<endl;
    }
    //第四种方式:字符逐个读取,不用考虑回车换行的问题,因为文件中的\n被读取出来之后输出到控制台上自动就换行了,利用fin.get()函数,这个函数的返回值是它读取到的字符,当遇到EOF的时候返回EOF,通过判断跳出while循环
    char buff = 'a';//随便给字符buff赋初始值
    while((buff=ifs.get()) != EOF)
    {
        cout<<buff;
    }
    //关闭文件
    ifs.close();
}

总结:第一种方法无法读取空格,第二种方法和第三种方法按行读取,一个是string库中的函数,一个是istream中的函数,第四种是把每个字符读出来逐个输出,效率较低而且可能会碰到意想不到的问题.

相关推荐
qing_0406033 分钟前
C++——模板初阶
开发语言·c++·模板
YOLO数据集工作室14 分钟前
Python介绍
开发语言·python
多思考少编码15 分钟前
【LGR-200-Div.4】洛谷入门赛 #27 A - H题解,包含(C++, Go语言)
开发语言·c++·golang·洛谷·算法竞赛
尘浮生20 分钟前
Java项目实战II基于Java+Spring Boot+MySQL的大型商场应急预案管理系统(源码+数据库+文档)
java·开发语言·数据库·spring boot·spring·maven·intellij-idea
一水鉴天28 分钟前
智能工厂的软件设计 “程序program”表达式,即 接口模型的代理模式表达式
开发语言·人工智能·中间件·代理模式
蒙娜丽宁32 分钟前
深入理解Go语言中的接口定义与使用
开发语言·后端·golang·go
尘浮生1 小时前
Java项目实战II基于Java+Spring Boot+MySQL的校园社团信息管理系统(源码+数据库+文档)
java·开发语言·数据库·spring boot·mysql·spring·maven
qq_1873526341 小时前
马踏棋盘c++
开发语言·c++·马踏棋盘c++
巭犇1 小时前
c语言中define使用方法
c语言·开发语言
qing_0406032 小时前
C++——string的了解和使用
开发语言·c++·string