在C语言中打开和处理文件很复杂,并且一般用不上,以至于我看C++的时候直接忽略掉这部分。然而C++语言中的iostream库提供了一种简单的方法来处理文件。
打开文件进行读写操作,必须包含<fstream>,虽然<fstream>会自动包含<iostream>,但如果要使用cin、cout,最好还是现实包含<iostream>。
为了读而打开文件,要创建一个ifstream对象,它的用法与cin相同;为了写而打开文件,要创建ofstream对象,它的用法与cout相同。
<iostream>库中有一个非常有用的函数getline().
函数原型:getline(istream &, string &, char del);
函数参数:第一个参数打开的流,第二个参数保存读入的内容,第三个参数是字段分隔符,默认是'\n'。
函数功能:从输入流读入一行内容到string s。
函数返回false条件:读入了文件结束标志(没有读入字符)
eg1(每次读入一行):逐行读入特定文件(测试为txt文件)并输出。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream in("C://Users//Administrator//Desktop//a.txt");
string str;
while(getline(in,str)){
cout << str << endl;
}
return 0;
}
eg2(每次读入一个单词):从特定文件逐个读入单词并统计给定单词出现的次数。
<span style="font-size:18px;">#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream in("C://Users//Administrator//Desktop//a.txt");
string str;
string findword = "the";
int num = 0;
while(in >>str){
if(str == findword)
++num;
}
cout << num << endl;
return 0;
}</span>
eg3:一次显示文件的一行,然后等待用户按回车键以后显示下一行。
<span style="font-size:18px;">#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ifstream in("C://Users//Administrator//Desktop//a.txt");
string str;
string word;
while(getline(in,str)&&(cin.get() =='\n')){
cout << str <<endl;
}
return 0;
}</span>
很多时候都希望输入回车来结束输入,C语言可以用:
if(getchar() == '\n')
C++语言可以用cin.get()来获取流中的字符,然后判断是否为回车符:
while(cin.get() ==‘\n’)
如果不是将字符放入流中:
cin.unget()