写入到文本文件
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
}