C++ 文本文件的读取和输出

  • Post author:
  • Post category:其他




本文转载自

xmh_free




自己浏览了上方的博客,主要整理了一下关于C++对文件的输入输出方法,如果想看C语言的输入输出方法,可浏览上述链接的博客

C++读写函数

在C++中,对文件的操作是通过

stream

的子类

fstream

来实现的。要用这种方式操作文件,就必须加入头文件fstream.h,也可以写成fstream。


文本文件


读操作

函数

open

的原型是

*void open(const char

filename,int mode,int access)。参数filename:要打开的文件名;参数mode:要打开文件的方式;access:打开文件的属性。打开文件的方式在类ios(是所有流式I/O类的基类)中定义,常用的值如下(可以用“|”或者“+”把以下属性连接起来):


  • ios::in

    以只读方式打开文件

  • ios::out

    以只写方式打开文件

  • ios::app

    以追加(写)方式打开文件
  • ….(上述博客中提到的其余三种在我的DEVC++上显示没有,所以需要其他功能的自行百度)


写操作

在C++语法中,文本文件输出函数的重点也是对输出格式的控制。这里是通过调用标准库中相应的输出格式设置函数来实现的,调用时需要包含头文件

iomanip.h

。比较常用的格式控制函数有:字符宽度设置函数

setw(int)

;默认填充字符设置函数

setfill(char)

;输出精度设置函数

setprecision(int)

。可自行结合下列进行尝试。

代码测试

这个代码要解决的问题是:

给定一个整数数组ar, 其中只有一个数出现了奇数次数,其他的数都是偶数词,打印这个数。

本文中使用的是常规方法,更巧妙的求解是采用异或进行运算,留给读者自己尝试。

运行之前的text.txt文件内容为

/*C++读写文件测试*/
#include<iostream>
#include<cstring>
#include<fstream>//读写头文件 
#include<algorithm>//算法头文件 
using namespace std;
int main(){
    int arr[40],n;
    string filepath="text.txt";
    ifstream pin;//ifstream,ofstream都是类名,定义的pin,put就是一个类的变量,通过该变量可以替代cin,cout进行输入,输出
    ofstream put;
    put.open(filepath.c_str(), ios::app);
    pin.open("text.txt",ios::in);
    pin>>n;//从文件中读入n
    for(int i=0;i<n;i++) pin>>arr[i];//从文件中读入各个数
//    int n=sizeof(arr)/sizeof(arr[0]);//注意strlen是统计字符数组的长度,而不能统计char类型, 
//    cout<<n;
    sort(arr,arr+n);//利用algorithm中的库函数 
    for(int i=0;i<n;i=i+2){
        if(arr[i]!=arr[i+1]){
            put<<endl;
            put<<setw(6)<<setfill('*')<<arr[i]<<endl;//将arr[i]写入filepath下的文件中 
            break;
        }
    }
    double k = 192.9773;
    put<<setprecision(6)<<k<<endl;
    return 0;
}

运行之后text.txt中的结果如下:



版权声明:本文为weixin_41234001原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。