C++可以通过cin与cout来读取键盘的输入与输出,也可以从一个txt文件中读取输入与输出
这就要用到fstream中的ofstream类了
一、将数据写入文本文件
1、首先需要声明ofstream对象,这就根本声明基本类型变量类似
例如:ofstream outFile;
2、然后要将声明的ofstream对象与文件关联起来,可以使用open()方法
outFile.open(“price.txt”);
如果关联的文件不存在的话,open()将会自动创建一个关联名字的文件,如果存在的话,
Open()会清除文件中的内容,然后将新的输入加入到文件中
3、使用完以后要用close()将其关闭,如果忘了关闭的话,程序在终止的时候会自动关闭
不过如果你在一个程序中同时进行输入输出的话,记得要关闭,不然将会无法输入
这样进行以后,就可以像使用cout那样使用它了,所有可以用于cout的操作都可以用于ofstream
对象
二、读取文本文件
读取文本文件流程大致与写入文本文件类似,这里就大概的说一下
1、声明ifstream对象
2、将对象与文件关联起来
3、使用完以后用close()关闭
Ifstream inFile;
InFile.open(“price.txt”);
使用方法同cin
这里不同的是,必须要判断是否打开文件并读取成功,如果打开一个不存在的文件将会导致使用ifstream对象失败
这里可以使用is_open()来判断是否打开成功
If(!inFile.is_open())
{
Exit(EXIT_FAILURE); //退出程序
}
怎么判断读取是否到达结尾呢?
这就要用到eof()和fail()了
如果到达结尾eof()和fail()将会返回true否则会返回false
fail()也可以用来检查类型不匹配
如果发生了类型不匹配,方法fail()会返回true否则返回false
good()方法将会在没有任何错误的情况下返回true,可以用来判断是否发生了意外的状况,比如文件受损什么的
下面是我做的一个例子
主要作用是先向文件中输入一些字符串,然后读取输入
#include "stdafx.h"
#include
#include
#include
#include
int main()
{
using namespace std;
ofstream outFile;
outFile.open("fish.txt");
string str1;
getline(cin, str1);
outFile << str1;
outFile.close();
ifstream inFile;
inFile.open("fish.txt");
if (!inFile.is_open()) //没有成功打开时提示
{
cout << "Could not open the file\n";
cout << "Program terinatinf.\n";
exit(EXIT_FAILURE);
}
int count=0;
char wd;
inFile >> wd;
while (inFile.good()&&!inFile.fail())//没有错误和到达文件尾
{
++count;
inFile >> wd;
}
cout << count;
inFile.close();
return 0;
}