1、输入输出流 iostream
输入输出流我们最常用,故就写下列常用输入输出进行简单介绍。
//头文件
#include<iostream>
using namespace std;
int main()
{
//向控制台打印
cout << "hello woeld!" << endl;
int i;
//输入一个整型数字
cin >> i;
//可以将cin当作判断来使用,被编译器转化为bool型,
//当输入为0时被转化为false ,输入为其他数字时就被转化为true;
while (cin >> i)
{
cout << " 输入了非零整型数据 :"<< i << endl;
}
system("pause");
return 0;
}
2、文件流 fstream
文件输入输出,进行文件的操作。进行文件操作要带有:
头文件#include<fstream>
fstream头文件中包含读 ifstream, 与写 ofstream , 读写fstream;
创建一个未绑定的文件流
fstream fstrm;
创建一个fstream,并打开名为s的文件
fstream fstrm(s);
s 可以是string类型,或者是一个C风格字符串的指针。默认文件模式依赖于fstream的类型;
fstream若是ifstream 默认是读文件;
fstream若是ofstream 默认是写文件;
创建一个带指定模式文件流
fstream fstrm(s,mode);
与前一个构造函数类似,但按指定mode打开文件
fstrm.open(s) | 打开名为 s 的文件,并将文件与 fstrm 绑定。 s 可以是一个 string 或一个指向C风格字符串的指针。默认的文件mode依赖于 fstream 的类型。 |
fstrm.close() fstrm.open(s,mode) | 关闭于 fstrm 绑定的文件。 按照mode模式来打开文件 s |
fstrm.is_open() | 返回一个bool值判断文件是否打开成功且尚未关闭。这个这个函数通常用来判断文件是否存在。 |
fstrm.get() | 获取文件的第一个字符,可以用来判断文件是否为空; fstrm.get() = EOF; EOF(end of file); |
fstrm.eof() | 判断是否是文件尾,返回一个bool值 |
文件模式
in | 以读方式打开 |
out | 以写方式打开,以写方式打开文件的时候如果文件不存在会自动创建一个文件 |
app | 追加方式打开,每次写操作前均定位到文件尾,追加也就是接着写 |
ate | 打开文件立即定位到未见尾 |
trunc | 截断文件,也就是先删除再创建 |
binary | 以二进制形式操作 |
文件模式可以混合使用,使用时前面加上ios::,打开方式为读且为追加方式。
fstrm.open("文件名字",ios::out|ios::app);
写文件
可以直接利用 << 操作符写文件
fstrm<<"CSDN数据"<<"写呀写"<<endl;
读文件
读文件数据有四种方法
1、
char buf[1024] = {0};
ifs>>buf;
2、利用getline读文件
char buf[1024] = {0};
ifs.getline(buf,sizeof(buf));
3、
string str;
ifs.getline(ifs,buf);
ifs>>str;
4、
char c;
while((c = ifs.get()) != EOF)
{
cout<<c;
}
下面写一段代码来理解文件流的具体操作
//头文件
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
int main()
{
ofstream ofs; //创建一个文件流
ofs.open("CSDN.txt", ios::out); //读方式打开,若没有就会自动在文件夹中创建一个文本文件
if (ofs.is_open()) //判断文件是否为空
cout << "文件打开成功!" << endl;
else
cout << "文件打开失败!" << endl;
ofs << "向CSDN中写数据!"; //向文件中写数据
ofs.close(); //关闭文件
ifstream ifs;
ifs.open("CSDN.txt",ios::in); //读方式打开
if (ifs.is_open()) //判断文件是否存在
{
cout << "文件打开成功!" << endl;
if (!ifs.eof()) //判断文件是否为空
{
cout << "文件不为空!" << endl;
string str;
ifs >> str; //将数据读出
cout << str << endl;
}
else
cout << "文件为空!" << endl;
}
else
cout << "文件打开失败!" << endl;
ifs.close();
ofs.open("CSDN.txt", ios::out | ios::app); //以读和追加的方式打开
ofs << "再写点什么!" << endl;
ofs.close();
ifs.open("CSDN.txt", ios::in);
if (ifs.is_open())
{
string st1;
ifs >> st1;
cout << st1 << endl; //如果第一次写入时,填入了换行时就将换行前的数据当作一个string数据
}
ifs.close();
system("pause");
return 0;
}