服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - C++中简单的文本文件输入/输出示例详解

C++中简单的文本文件输入/输出示例详解

2022-07-20 12:17francis_xd C/C++

C++程序把输入和输出看作字节流,输入时程序从输入流中抽取字节,输出时程序将字节插入到输出流中,下面这篇文章主要给大家介绍了关于C++中简单的文本文件输入/输出的相关资料,需要的朋友可以参考下

为了便于理解,我们把cout 用于控制台输出时的一些情况和写入到文本文件的情况进行类比:

cout 控制台输出

包含头文件 iostream

头文件 iostream 定义了一个 ostream 类用于处理输出

头文件 iostream 声明了一个名为 cout 的 ostream 对象

指明名称空间 std

可以结合使用cout和运算符<<来显示各种类型的数据

文本文件输出(写入到文本文件)

包含文件头 fstream

头文件 fstream 定义了一个ofstream 类用于处理输出

声明一个或多个 ofstream 对象,可以自由命名

指明名称空间 std

把 3 中声明的 ofstream 对象与文件关联起来,比如使用 open()方法

使用完文件后,需要使用 close()方法将其关闭

还可以结合 ofstream 对象和运算符<<来输出各种类型的数据

注意:cout 控制台输入输出中,头文件 iostream 声明了一个名为 cout 的 ostream 对象,无需自己手动声明;文件输出中,我们必须自己动手声明一个 ofstream 对象,为其命名,将其同文件关联起来。请看下面的例子:

?
1
2
3
#include<fstream>
ofstream OutFile;   //声明一个 ofstream 对象
OutFile.open("study.txt");  //将OF与“study.txt”文件关联起来

下面请看一个完整的程序,用户输入信息,将信息显示到屏幕上,再将这些信息写入到文本文件中:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    char name[20];
    double height;
    double weight;
    ofstream outFile;//创建了一个ofstream 对象
    outFile.open("information.txt");//outFile 与一个文本文件关联
    cout<<"Enter name: ";
    cin.getline(automobile, 20);
    cout<<"Enter height: ";
    cin>>year;
    cout<<"Enter weight: ";
    cin>>weight;
 
    // cout 控制台输出前面输入的信息
    cout<<fixed;
    cout.precision(2);
    cout.setf(ios_base::showpoint);
    cout<<"Make and Model: "<<automobile<<endl;
    cout<<"Year: "<<year<<endl;
    cout<<"Was asking $"<<a_price<<endl;
    cout<<"Now asking $"<<d_price<<endl;
 
    // outFile 把信息写入到文本文件
    outFile<<fixed;    //小数点格式显示double
    outFile.precision(2);    //设置精度
    outFile.setf(ios_base::showpoint);    //强制显示小数点后的零
    outFile<<"Name: "<<name<<endl;
    outFile<<"Height: "<<height<<endl;
    outFile<<"Weight: "<<weight<<endl;
    outFile.close();    //使用完文本文件后要用close()方法将其关闭
    return 0;
}

接下来,我们再把cin 用于控制台输入时的一些情况和读取文本文件的情况进行类比:

cin 控制台输出

包含头文件 iostream

头文件 iostream 定义了一个 istream 类用于处理输出

头文件 iostream 声明了一个名为 cin 的 istream 对象

指明名称空间 std

可以结合使用cin和运算符>>来输入各种类型的数据

文本文件输入(读取文本文件)

包含文件头 fstream

头文件 fstream 定义了一个ifstream 类用于处理输出

声明一个或多个 ifstream 对象,可以自由命名

指明名称空间 std

把 3 中声明的 ifstream 对象与文件关联起来,比如使用 open()方法

使用完文件后,需要使用 close()方法将其关闭

还可以结合 ifstream 对象和运算符>>来读取各种类型的数据

可以用 cin 和 get() 方法来读取一个字符,或用 cin 和 getline() 方法来读取一行字符

可以结合使用 ifstream 和 eof()、fail()方法来判断输入是否成功

如果试图打开一个不存在的文件用于输入将会导致后面使用 ifstream 对象读取数据时发生错误,因此用户需要使用 is_open() 方法检查文件是否被成功打开,如下:

?
1
2
3
4
5
6
7
#include <fstream>
#include <cstdlib>
ifstream InFile;
InFile.open("information.txt");
if(!Infile.is_open()){
    exit(EXIT_FAILURE);
}

如果文件被成功打开, is_open() 方法将返回 true , exit()的原型在头文件 cstdlib 中被定义,exit(EXIT_FAILURE) 用于终止程序。

下面请看一个完整的程序,用户打开指定的文本文件,读取文件中的 double 类型数据,并在控制台输出所读取数据的数目、总和以及平均数:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
const int SIZE = 60;
int main()
{
    char fileName[SIZE];
    ifstream InFile;
    cout<<"Enter the name of data file: ";
    cin.getline(fileName, SIZE);
    cout<<fileName<<endl;
    InFile.open(fileName);
    if(!InFile.is_open()){
        cout<<"Could not open the file "<< fileName <<endl;
        cout<<"Program terminating.\n";
        exit(EXIT_FAILURE);
    }
    double value;
    double sum = 0.0;
    int count = 0;
    InFile >> value;
    while(InFile.good()){     
        ++count;
        sum += value;
        InFile >> value;
    }
    if (InFile.eof())
        cout<<"End of file reached:\n";
    else if (InFile.fail())
        cout<<"Input terminated by data mismatch.\n";
    else
        cout<<"Input terminated for unknown reason.\n";
    if(count == 0)
        cout<<"No data processed.\n";
    else{
        cout<<"Items read: "<<count<<endl;
        cout<<"Sum: "<<sum<<endl;
        cout<<"Average: "<<sum/count<<endl;
    }
    InFile.close();
    return 0;
}

总结

到此这篇关于C++中简单的文本文件输入/输出的文章就介绍到这了,更多相关C++文本文件输入/输出内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/francis_xd/article/details/78347595

延伸 · 阅读

精彩推荐
  • C/C++C++文件读写代码分享

    C++文件读写代码分享

    本文给大家分享的是2个C++实现文件读写的代码,都非常的简单实用,有需要的小伙伴可以参考下。...

    C++教程网9762021-03-01
  • C/C++深入理解C++中的文件操作

    深入理解C++中的文件操作

    这篇文章主要给大家深入的介绍了C++中的文件操作,文件的操作对每个程序员来说都是很重要的,本文的介绍的很详细,有需要的朋友可以参考借鉴,下面来...

    尝鲜11762021-04-28
  • C/C++c语言实现的hashtable分享

    c语言实现的hashtable分享

    哈希表效率高,众所周知。应用广泛,php中大部分存储使用的都是hashtable,包括变量,数组…如何使用c语言实现hashtable呢,现提供自己的思路,如有不妥之...

    C语言教程网8592021-01-14
  • C/C++C++之普通成员函数、虚函数以及纯虚函数的区别与用法要点

    C++之普通成员函数、虚函数以及纯虚函数的区别与用法要点

    本篇文章主要介绍了C++中的普通成员函数、虚函数以及纯虚函数,非常的详细,有需要的朋友可以参考下...

    luoweifu6032021-03-03
  • C/C++详解C语言中的getgrgid()函数和getgrnam()函数

    详解C语言中的getgrgid()函数和getgrnam()函数

    这篇文章主要介绍了详解C语言中的getgrgid()函数和getgrnam()函数,是C语言入门学习中的基础知识,需要的朋友可以参考下...

    C语言教程网6502021-03-09
  • C/C++解析VC中预编译头文件的深入分析

    解析VC中预编译头文件的深入分析

    本篇文章是对VC中预编译头文件进行了详细的分析介绍,需要的朋友参考下...

    C++教程网3722020-12-02
  • C/C++C++设计模式之策略模式(Strategy)

    C++设计模式之策略模式(Strategy)

    这篇文章主要为大家详细介绍了C++设计模式之策略模式Strategy ,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    chencarl10542021-06-23
  • C/C++分析C语言一个简单程序

    分析C语言一个简单程序

    本文主要介绍C语言简单的程序,这里给大家详细介绍C语言代码,对函数概念、头文件、自定义函数等基础信息的讲解,希望能帮助刚刚学习的同学...

    C语言中文网8532021-04-10