四、文件输入流
istream类最适合用于顺序文本模式输入
ifstream类支持磁盘文件输入
istringstream类支持把字符串作为输入流
提取运算符(>>):
使用进制修饰符,修改输入数据的进制形式。
代码示例:输入三个十进制数,转换为三种不同的进制数,并输出。
#include <iostream>
#include <iomanip>//引用控制输出的头文件
using namespace std;
int main()
{
int n1,n2,n3;
cin>>hex>>n1>>dec>>n2>>oct>>n3;
cout<<"-------------"<<endl;
cout<<n1<<endl<<n2<<endl<<n3<<endl;
return 0;
}
运行结果:
10
10
10
-------------
16
10
8
五、文件输入流
文件输入流ifstream及其对象
在C++中,文件输入流ifstream用于从文件中读取数据。首先需要包含<fstream>头文件,然后可以按照以下步骤来操作文件输入流ifstream及其对象:
1、创建ifstream对象:可以通过以下方式创建一个ifstream对象并打开文件:
#include <fstream>
ifstream file("example.txt")
2、检查文件是否成功打开:在创建ifstream对象后,需要检查文件是否成功打开,可以使用is_open()方法:
if (file.is_open()) {
// 文件成功打开
} else {
// 文件打开失败
}
3、从文件中读取数据:可以使用ifstream对象的各种输入操作符(如>>)来从文件中读取数据:
int number;
file >> number; // 从文件中读取一个整数并存储在number变量中
4、逐行读取文件内容:如果需要逐行读取文件内容,可以使用getline()方法:
string line;
while (getline(file, line)) {
// 处理每一行的内容
}
注:getline的功能是从输入流中读取多个字符,并且允许指定输入终止字符,读取完成后,从读取的内容中删除终止字符。
5、当数据输入完成后,关闭文件:在文件操作完成后,记得关闭文件以释放资源:
file.close();
六、案例分析
1、定义函数input,通过键盘输入一组文字(多行),保存到文本文件abc.txt中。
2、定义函数output,打开文本文件abc.txt,逐行读出文字,在控制台输出。(getline函数)
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
void input()
{
ofstream os("abc.txt");//os文件输入流对象
string line;
if(os){
while(getline(cin,line))//将输入的字符串保存到line中
{
if(line == "quit")
{
break;
}
os<<line<<endl;
}
os.close();
}
}
void output()
{
ifstream is("abc.txt");
string line;
if(is){
while(getline(is,line))
{
cout<<line<<endl;
}
is.close();
}
}
int main()
{
cout<<"请输入信息,以'quit'结束"<<endl;
input();
cout<<"保存到文件中的信息有:"<<endl;
output();
return 0;
}
运行结果:生成abc.txt文件,并将输入的信息保存到文件中。
请输入信息,以'quit'结束
dfasdf
dfa
adfdasg
quit
保存到文件中的信息有:
dfasdf
dfa
adfdasg