C++简单的文件输入输出

41 篇文章 0 订阅
17 篇文章 0 订阅

写入到文本文件

1.包含头文件:#include < fstream >
2.头文件中定义了一个用于处理输出的ofstream类,所以要声明一个或多个ofstream变量并命名xxx。
3.指明命名空间std:using std::xxx,或直接std::xxx
4.将该ofstream对象同一个文件关联起来,即:xxx.open(文件名);要检查是否文件open成功

if (!inFile.is_open())  // failed to open file
    {
        cout << "Could not open the file " << filename << endl;
        cout << "Program terminating.\n";
        exit(EXIT_FAILURE);
    }

5.就像使用cout那样使用xxx
6.使用完后关闭:xxx.close();

  • cout.precision(val)其实就是在输出的时候设定输出值以新的浮点数精度值显示,即小数点后保留val位
  • cout.setf(ios_base::showpoint)显示浮点数小数点后面的零。
  • 输出到屏幕上使用cout。此程序中将内容输出到文件中,如果文件已存在,则清空。
// outfile.cpp -- writing to a file
#include <iostream>
#include <fstream>                 // for file I/O

int main()
{
    using namespace std;

    char automobile[50];
    int year;
    double a_price;
    double d_price;

    ofstream outFile;              // create object for output
    outFile.open("carinfo.txt");   // associate with a file

    cout << "Enter the make and model of automobile: ";
    cin.getline(automobile, 50);
    cout << "Enter the model year: ";
    cin >> year;
    cout << "Enter the original asking price: ";
    cin >> a_price;
    d_price = 0.913 * a_price;

// display information on screen with 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;

// now do exact same things using outFile instead of cout

    outFile << fixed;
    outFile.precision(2);
    outFile.setf(ios_base::showpoint);
    outFile << "Make and model: " << automobile << endl;
    outFile << "Year: " << year << endl;
    outFile << "Was asking $" << a_price << endl;
    outFile << "Now asking $" << d_price << endl;

    outFile.close();            // done with file
    return 0;
}

读取文本文件

1.包含头文件:#include < fstream >
2.头文件中定义了一个用于处理输出的ifstream类,所以要声明一个或多个ifstream变量并命名xxx。
3.指明命名空间std:using std::xxx,或直接std::xxx
4.将该ifstream对象同一个文件关联起来,即:xxx.open(文件名);
5.就像使用cin那样使用xxx,使用xxx.get()读取一个字符,或xxx.getline();读取一行字符。判断:读取时遇到EOF:方法eof()返回true,类型不匹配(或EOF)时:方法failf()返回true,文件受损或硬件故障:方法bad()返回true。以上情况总体用一种方法判断:good(),无任何错误时返回true。
6.使用完后关闭:xxx.close();

  • cout.precision(val)其实就是在输出的时候设定输出值以新的浮点数精度值显示,即小数点后保留val位
  • cout.setf(ios_base::showpoint)显示浮点数小数点后面的零。
  • 输出到屏幕上使用cout。此程序中将内容输出到文件中,如果文件已存在,则清空。
// sumafile.cpp -- functions with an array argument
#include <iostream>
#include <fstream>        // file I/O support
#include <cstdlib>        // support for exit()
const int SIZE = 60;
int main()
{
    using namespace std;
    char filename[SIZE];
    ifstream inFile;        // object for handling file input
    cout << "Enter name of data file: ";
    cin.getline(filename, SIZE);
    inFile.open(filename);  // associate inFile with a file
    if (!inFile.is_open())  // failed to open file
    {
        cout << "Could not open the file " << filename << endl;
        cout << "Program terminating.\n";
        exit(EXIT_FAILURE);
    }
    double value;
    double sum = 0.0;
    int count = 0;          // number of items read

    inFile >> value;        // get first value
    while (inFile.good())   // while input good and not at EOF
    {
        ++count;            // one more item read
        sum += value;       // calculate running total
        inFile >> value;    // get next 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();         // finished with the file
    return 0;
}
  • 因为上述代码中infile>>value的结果为:infile = infile.good(),所以可以精简为以下形式:
while (inFile >> value)    // read and test for success
{
    // loop body goes here
    // omit end-of-loop input
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值