cin>>及cin.get()值的获取问题

C++语言 码拜 8年前 (2016-06-07) 914次浏览
最近在看C++基础知识,给一个整型输入一个字符值,就会死循环了。
查阅资料也想了好久,也不知道本人的想法对不对….主要是这句代码:
d=cin.get();   这里假如获取不到int值就返回了-1值,为什么不是0值呢
下附代码,请高手能够细细讲解一下,谢谢了。
#include<iostream>
using namespace std;
int main()
{
int i=cin.get();
cout<<i<<endl;
int d=1;
while((d=cin.get())!=-1)
{
cout<<d<<endl;
cout<<“input;”;
cin>>d;
}
}
解决方案

30

cin.get返回值就这么规定的:
http://en.cppreference.com/w/cpp/io/basic_istream/get
返回EOF,而EOF定义成了-1

5

乍看起来c++的cin、cout、ifstream、ofstream、istringstream、ostringstream在输入、输出上比c的scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf简单,不用格式控制符!
但是不用格式控制符,输入输出恰好是你期望的格式的时候好说;等到输入输出不是你期望的格式的时候,你就会觉得还是用格式控制符更方便、更靠谱。
摒弃cin、cout、ifstream、ofstream、istringstream、ostringstream!
使用scanf、printf、fscanf、fprintf、fread、fwrite、sscanf、sprintf。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明cin>>及cin.get()值的获取问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)