文件流里面:fstream表示文件流,ifstream和ofstream是两种文件流方式:输入和输出
ifstream从磁盘文件输入到缓存中,最后到显示屏上,即读数据。
ofstream将数据写入到磁盘文件,即写数据,下面这个例子很好的体现了这个方法:
#include<iostream>
#include<fstream>
#include<iomanip>
#include<string>
using namespace std;
int main()
{
ofstream file1("D:\\1234.txt",ios::app);//打开一个文件,用于写入文件即out,也可以用,fstream file1(D:\\123.txt,ios::out)声明
file1<<"once"<<endl;//写入文件
file1<<1<<endl;
file1.close();//关闭磁盘文件
ifstream file2("D:\\1234.txt",ios::in);//打开一个文件,用于读取数据
ofstream file3("D:\\12345.txt",ios::out);//打开一个文件,用于写数据
char buffer[100];
int i;
file2.getline(buffer,100);//读取数据
cout<<buffer<<endl;//把数据写入到文件中
file2>>i;
cout<<i<<endl;
file2.close();
}
记住:out是输出,从缓存输出到文件中,即写入
in是输入,即从文件输入到缓存中,即读取。
#include<iostream>
#include<fstream>
#include <string>
using namespace std;
int main()
{ int i=0;
ofstream word("D:\\word.txt",ios::out);
if(!word)
{cerr<<"open file failure"<<endl;
exit(1);
}
char c[100];
cin.getline(c,100);//输入一行
for(i=0;i<100;i++)
{
if(c[i]>='a'&&c[i]<='z'||c[i]<='Z'&&c[i]>='A')
word<<c[i];}
word.close();
ifstream word1("D:\\word.txt");
ofstream word2("D:\\word3.txt");
/*错误的方法:
char c[100];
word1.getline(c,100);//那样就把空字符都给C了,这样的话,最后转换大小后输出的C后面会乱
应该去下面这个方法,依次读取每个字符,用get,然后依次写入转换后的字符,用put
*/
char ch;
while(word1.get(ch))
{if(ch>='a'&&ch<='z')
ch=ch-32;
word2.put(ch);
cout<<ch;
}
cout<<endl;
word1.close();
word2.close();
}