C++中>>运算符的说明
Explanation of >> operator in C++
我编辑了一段代码,旨在从.txt文件中读取整数并使用cout显示它们。它旨在显示第一个整数后跟逗号,然后是运行总平均值,当.txt中有空行或 singke 整数时,问题出在哪里。建议我将代码更改为:
using namespace std;
# include <iostream>
#include <fstream>
#include<string>
int main ()
{
double y = 0,x = 0,value1 =0;
string myFileName,myString;
cout<< "please enter the name of the file you wish to open"<<"n";
cin>>myFileName;
ifstream inFile;
inFile.open(myFileName.c_str());
while (!inFile.eof())
{
double currentAv;
//while(getline(inFile,myString,(' ')))
while(inFile>>value1)
{
y=y+1;
//value1 = atof(myString.c_str());
currentAv=(value1+x)/y;
cout<<value1<<","<<currentAv<<endl;
x=value1+x;
}
}
inFile.close();
system("pause");
}
去掉了带有//的 2 行,while 循环更改为:
while(inFile>>value1)
问题是我需要了解新代码与旧代码的不同之处。 有人可以帮忙吗?我知道它会转移位,但我不明白为什么会起作用。代码确实有效。
让我们一步一步地看看发生了什么。
inFile>>value1
这将调用 istream::operator>>,它从流中读取double
并返回对流对象的引用,即inFile
本身。
while(inFile>>value1)
while
语句的条件必须可转换为 bool
。现在我们知道inFile>>value1
的类型是std::istream&
的,并且确实存在istream::operator bool
,如果没有设置错误标志,则返回true
(这意味着上次读取操作不成功)。
因此,while(inFile>>value1)
的整体含义是:在您可以做的时候阅读inFile
value1
。
关于与getline
加atof
相比的差异.首先,>>
读取直到任何空格字符,而不仅仅是代码中的空格。其次,它将在无效输入时失败。第三,它只是更惯用。
相关文章:
- 当使用通配符和null指针调用函数时,对输出的说明
- EASTL矢量<向量<int>>连续的
- 关于C++中具有多重继承"this"指针的说明
- 16 位到 10 位转换代码说明
- C++ 基本 CTOR 说明 - 为什么不调用赋值/复制构造函数
- 编译器指出结构和 int 说明的错误 2059
- 随机数生成函数说明
- 赋值到类型和空大括号. 语法说明
- C++ switch 语句:对案例进行分组,并针对每个案例给出特定的说明
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- std::extent 实现详细信息说明
- 您好,我实际上想了解以下代码.有人可以详细说明代码它到底在做什么吗?为什么它会在第 31 行崩溃
- 如何理解"Temporary objs are destroyed as the last step in evaluating the full-expression"?谁能用一些简单的例子来说明这
- 有没有办法我可以在 C++ 中使用 if 语句来说明如果一个字符串不是两个名称的 eqal,它会给出一个输出,ATM i
- 有没有办法在c ++中清除空数组,请检查下面的代码以获取说明
- 使用英特尔内部函数 (AVX) 中的混合说明
- 复印作业操作员说明
- OpenCV on_low_height_thresh_trackbar() 参数说明
- C 程序结果说明
- 分段故障说明