优秀的编程知识分享平台

网站首页 > 技术文章 正文

C++中提取操作符>>隐含的特殊功能

nanyue 2024-08-16 19:59:04 技术文章 11 ℃

上一篇文章介绍了C++的文件流,一库两类。

本文再结合一个例子,从一个文本文件5integers.txt中读取5个数据,然后求和。通过这个例子,进一步熟悉和掌握提取操作符文件流的语法特性。

在5integers.txt中,分5行存放了5个数据:

10

20

30

40

50


为了读取这些数据,我们需要用到读文件流ifstream, 通过它的方法open(filename)来打开5integers.txt。

通过一个循环,用流的提取操作符>>, 从文件中逐个提取数据,并累计求和。

提取操作符>>返回的是流本身,因此,很方便来判断是否已经读到文件尾部,当读到文件尾部的时候,提取操作符返回的文件流的值就会变为false,以次为依据结束读文件操作。

#include <fstream> //读文件流ifstream的头文件

#include <iostream> //cout的头文件

using namespace std;

int main()

{

ifstream inputFile; //创建一个读文件流对象

inputFile.open("5integers.txt"); //打开文件5integers.txt, 该文件与本示例源文件处于同一目录下

int total = 0; //保存求和的变量

int value; //每次从文件流中提取的整数,保存在该变量中

if (inputFile.fail()) //如果打开文件失败,比如没找到文件,方法fail()的值就会为真。

{

cout << "File open failure." << endl; //给出打开文件失败的提示信息

}

else

{

cout << "File open success!" << endl; //给出打开文件成功的提示信息



//从文件流中提取数据,存于value中。如果读到文件结束位置,则括弧中的逻辑值为false。

while(inputFile>>value)

{

total += value;

}

cout << "The total of 5 integers is: " <<total<< endl;

inputFile.close(); //关闭文件,解除文件流与文件的连接。

}

return 0;

}


程序运行会输出求和结果: 150.

这里有一个需要注意的地方,就是提取操作符>>的强大功能,它读取的是文本数据,从文件流提取出来,要放到整型变量value中去,因此,提取操作符>>就自动完成了把文本(10,20,30,40,50)转换成整数的工作。

问题: 如果把value和total都声明成std::string型对象,那么提取操作符>>从文件中提取的数据,就会保存为std::string格式,最后输出结果为1020304050. 相关代码代码此处从略,有兴趣的可以写写看。

小结:

提取操作符 >>,提取出来的数据是何种类型,是根据接收这个数据的变量类型而定。

Tags:

最近发表
标签列表