c++为什么不能用while(cin>>(。。。)!=EOF)来实现一次运行多次数据的输入?

问题描述

c++为什么不能用while(cin>>(。。。)!=EOF)来实现一次运行多次数据的输入?
c语言中用while(scanf(。。。)!=EOF)来实现一次运行的多次输入。 c++为什么不能用while(cin>>(。。。)!=EOF)来实现? 改怎么改? 如下程序为什么不行?

#include
using namespace std;
#define pi 3.1415926
const double PI=3.14;
int main()
{ system(""color 4A"");
double s1s2r;
while((cin>>r)!=EOF)
{

        s1=PI*r*r;        s2=pi*r*r;        cout<<""s1=""<<s1<<endl;        cout<<""s2=""<<s2<<endl;}system(""pause"");

}

解决方案

改成while(cin>>r)

解决方案二:
这样做的操作结果是比较 cin != EOF 请问你知道这是什么意思吗? 若要改就把cin拿出来cin>>i返回值类型是istream的目的是可以写成:cin>>i>>j,因为cin>>i是一个istream,和cin类型是一样的,才可以继续"">>j""。

解决方案三:
EOF是一个宏,值是-1,cin不是函数,没有返回值,也就没办法去比较了

解决方案四:
其实while(cin>>r)就ok啊,如果你还要判断r是否为0,就只需while(cin>>r,r),截止是ctrl+z

时间: 2024-11-28 15:42:59

c++为什么不能用while(cin&amp;gt;&amp;gt;(。。。)!=EOF)来实现一次运行多次数据的输入?的相关文章

c++-char Getchar(istream &amp;amp;amp;in=cin) 这个怎理解?

问题描述 char Getchar(istream &in=cin) 这个怎理解? char Getchar(istream &in=cin) { char ch; while (!in.eof() && (ch = in.get())==' '); return ch; } 解决方案 C++中while(cin)的理解while(cin)的理解FRM-30187: Size of CHAR column in record group must be between 1

《C++程序设计教程(第3版)》——第3章,第3节cin输入流

3.3 cin输入流 与cout输出流对应的是cin输入流,使用cin输入流可以方便地从键盘输入数据至内存中正在运行的程序. 在程序执行期间,使用cin来给变量输入数据,其一般格式为: cin >> <变量名1> [ >> <变量名2> >> - >> <变量名n> ] 其中,运算符">>"用来从操作系统的输入缓冲区中提取字符,然后送到程序的内存变量中.在C++中这种输入操作称为"

cin详解(get()、getline()、clear()、sync())

简述 在C中,输入输出用scanf和printf,在输入数据的同时还需说明数据的类型,如果输入数据较多,那就很麻烦,而C++中也有相似的东西cin和cout,它们来自C++的一个名叫" iostream"的类库. iostream是由istream(输入流)和ostream(输出流)派生.所以在iostream中就有了输入和输出的相关对象: cin:标准输入(standard input)的istream类对象,cin使我们可以从设备读取数据. cout:标准输出(standard o

C++编程中用put输出单个字符和cin输入流的用法_C 语言

用C++流成员函数put输出单个字符 在程序中一般用cout和插入运算符"<<"实现输出,cout流在内存中有相应的缓冲区.有时用户还有特殊的输出要求,例如只输出一个字符.ostream类除了提供上面介绍过的用于格式控制的成员函数外,还提供了专用于输出单个字符的成员函数put.如: cout.put('a'); 调用该函数的结果是在屏幕上显示一个字符a.put函数的参数可以是字符或字符的ASCII代码(也可以是一个整型表达式).如 cout.put(65 + 32); 也显

关于string和char的程序,求解~?为什么运行不通过

问题描述 关于string和char的程序,求解~?为什么运行不通过 #include #include #include using namespace std; const int MAXSIZE = 100; typedef struct { string address;///?? int x; string next;///???? }info; typedef struct { info data[MAXSIZE]; int length; }SeqList,*pSeqList; p

C++ 递归位置排列算法及其应用

废话不多说,我们先看一下位置排序的算法: #include <iostream> using namespace std; int n = 0; int m = 2; int l = 0; int a[100]; void solve(int l); int main() { cout<<"请输入位数 n "<<endl; cin>>n; solve(l); return 0; } void solve(int l) { if(l>

C++系统中指针错误,添加不了对象,真的很急!!!!

问题描述 C++系统中指针错误,添加不了对象,真的很急!!!! 为什么不能实现添加啊!!!!!真的很急 #include <iostream>#include <iomanip>#include <conio.h>#include <string>#include <fstream>#include <cstdlib>using namespace std;int i=0;const int Maxp=100;//最大商品类的数量cl

新手 c++学生管理系统 不知道怎么改错

问题描述 新手 c++学生管理系统 不知道怎么改错 #include "iostream" #include "string" #include "fstream" #include "conio.h" using namespace std; // *******建立学生信息的类 class Student { public: Student *Head,*p; Student *Next,*end; char name[2

比大小

比大小 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 给你两个很大的数,你能不能判断出他们两个数的大小呢? 比如123456789123456789要大于-123456 输入 每组测试数据占一行,输入两个不超过1000位的10进制整数a,b 数据保证输入的a,b没有前缀的0. 如果输入0 0表示输入结束.测试数据组数不超过10组 输出 如果a>b则输出"a>b",如果a<b则输出"a<b",如果相等则输出&qu