C++ 中cin 输入流的多种函数用法
cin的介绍
1.cin简介cin是C++编程语言中的标准输入流对象,即istream类的对象。
cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。
此外,cout是流的对象,即ostream类的对象,cerr是标准错误输出流的对象,也是ostream 类的对象。
这里的标准输出指的是终端键盘,标准错误输出指的是终端的屏幕。
在理解cin功能时,不得不提标准输入缓冲区。
当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在cin的缓冲区中并且被当成一个字符来计算!比如我们在键盘上敲下了123456这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是7 ,而不是6。
cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发cin的成员函数去读取数据。
2. cin的常用读取方法使用cin从标准输入读取数据时,通常用到的方法有cin>>,cin.get,cin.getline。
2.1cin>>的用法cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符。
实例程序如下。
#include <iostream>usingnamespace std;int main(){char a;int b;float c;stringcin>>a>>b>>c;cout<<a<<" "<<b<<" "<<c<<" "<<endl;system("pause");return0;}在屏幕中一次输入:a[回车]11[回车]5.56[回车],程序将输出如下结果:注意:(1)cin>>等价于cin.operator>>(),即调用成员函数operator>>()进行读取数据。
c语言中cin的用法
c语言中cin的用法一、概述在C语言中,cin是一个经常使用的输入流对象,主要用于从控制台或者其他设备上读取用户输入数据。
它可以接收多种类型的输入,并将其存储到相应的变量中。
本文将详细介绍cin的用法,包括如何使用cin进行基本类型输入、字符串输入以及如何处理错误输入。
二、基本类型输入1. cin与基本数据类型变量配合使用时,可以直接使用" >> "操作符将用户的输入值赋给变量。
例如,我们希望从控制台上获取一个整数并存储到变量num中:```int num;cout << "请输入一个整数:";cin >> num;```这段代码首先打印提示信息"请输入一个整数:",然后等待用户的输入。
当用户按下回车键后,程序将会从标准输入流中读取一个整数,并将其赋值给变量num。
2. 对于浮点数、字符和布尔型数据,使用cin也是类似的方式:浮点数:```float f;cout << "请输入一个浮点数:";cin >> f;```字符:```char ch;cout << "请输入一个字符:";cin >> ch;```布尔型:```bool flag;cout << "请输入一个布尔值(0/1):";cin >> flag;```三、字符串输入除了基本类型变量之外,我们还可以使用cin进行字符串的输入。
C++中没有直接支持字符串类型的变量,但我们可以使用字符数组或者string类来存储字符串。
1. 使用字符数组(C风格字符串):```char str[100];cout << "请输入一个字符串:";cin >> str;```这段代码定义了一个大小为100的字符数组str,并通过cin将用户输入的字符串存储到该数组中。
C++中cin的使用总结
C++中cin的使⽤总结 在学习C++时⼤家肯定迷惑过关于输⼊输出各种输出函数的功能,现在来总结⼀下各种函数的简单⽤法。
cin建有⼀个缓冲区,即输⼊缓冲区。
⼀次输⼊过程是这样的,当⼀次键盘输⼊结束时会将输⼊的数据存⼊输⼊缓冲区,⽽cin函数直接从输⼊缓冲区中取数据。
正因为cin函数是直接从缓冲区取数据的,所以有时候当缓冲区中有残留数据时,cin函数会直接取得这些残留数据⽽不会请求键盘输⼊,这就是为什么有时会出现输⼊语句失效的原因。
1.cin>>函数的⽤法:这是我们最经常⽤,学习C++最初接触的输⼊流。
⽤法1.接受⼀个字符串的输⼊,遇到“空格”"TAB""回车“结束。
#include <iostream> using namespace std; void main () { char a[10]; cin>>a; cout<<a<<endl; } 输⼊:aaabbbccc 输出:aaabbbccc 输⼊:aaa bbb ccc 输出:aaa 2.输⼊⼀个数字。
#include <iostream> using namespace std; void main () { int a,b; cin>>a>>b; cout<<a+b<<endl; } 输⼊:1回车2回车 输出:3 2.cin.get()的⽤法,这函数有三种形式,cin.get(),cin.get(charch),cin.get(array,length)。
⽤法1.cin.get() ⽤于读取⼀个字符,结束条件是回车,不过不会丢弃缓冲区的回车(enter)和空格,cin.get()和cin.get(char ch)功能基本⼀样的,char = cin.get()和cin.get(char ch)共能⼀样。
C++cin输入的多种方法详解
C++cin输⼊的多种⽅法详解⽬录前⾔⼀、cin1、cin >>2、cin.get()2.1 函数介绍3、getline()前⾔在C++中⼀般使⽤cin来进⾏交互,获取⽤户输⼊信息。
cin是C++编程语⾔中的标准输⼊流对象,即stream类的对象。
cin主要⽤于从标准输⼊读取数据,这⾥的标准输⼊,指的是终端的键盘。
主要⽤到有cin >>、cin.get()、cin.getline()。
cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,⼀旦缓冲区中有数据,就触发cin的成员函数去读取数据。
⼀、cin1、cin >>⽀持连续读取,以Tab、空格为分隔符,换⾏符为结束符号;/*----------------------------------------------------------------------> File Name: cinDemo01.cpp> Author: Jxiepc> Mail: Jxiepc> Created Time: Mon 20 Sep 2021 10:09:55 AM CST----------------------------------------------------------------------*/#include<iostream>#include<unistd.h>#include<cstring>int main(int argc, char *argv[]){std::string s;while(std::cin >> s){std::cout << s << std::endl;}return 0;}当cin>>从缓存区读取数据时,会⾃动忽略作为第⼀个字符存在的Tab、空格(Space)、换⾏,继续读取下⼀个字符,若缓存区为空,则等待。
cin.getline()函数用法
cin.getline()函数用法getline函数是一个比较常见的函数。
根据它的名字我们就可以知道这个函数是来完成读入一行数据的。
现在对getline函数进行一个总结。
下面是一个简单的实现方式:激活代码int getline_(char s[],int lim){int c,i;i=0;while((c=getchar())!=eof&&c!='\n'&&i<lim-1)s[i++]=c;s[i]='\0';return i;}复制代码下面就是一个直观的测试程序:复制代码int test1(){char s[];while((len=getline_(s,))>0)printf("%s\n",s);return 0;}激活代码但是这个实现是有问题的,就是遇到空行的时候也会停止的。
为了化解这个问题,我们须要重新考虑while循环的推论条件。
在上面的实现中,我们是遇到eof和换行'\n'的时候都停止 ,然后通过判断所读到的字符串的长度是否大于0来判断是否结束。
为了能够初始化空行,我们须要推论一下与否初始化的就是结尾eof,如果不是就稳步加载就可以了。
还有一点,eof是什么?eof就是c语言中为了区分有效率数据和输出结束符的。
c语言采用的解决办法是:在没有输入时getchar函数将返回一个特殊值,这个特殊值与任何实际字符都不同。
这个值成为eof(end of file ,文件结束)。
我们在声明变量c 的时候,必须让它大到足以存放getchar函数返回的任何值。
之所以不把c声明成char 类型,是因为它必须足够大,除了能存储任何可能的字符外还要能存储文件结束符eof。
eof的输出由系统瞄准。
windows下就是ctrl+z,linux/unix下就是ctrl+d。
复制代码int getline2_(char s[],int lim){int c,i;i=0;while((c=getchar())!=eof&&c!='\n'&&i<lim-1)s[i++]=c;if(c==eof&&i==0)return -1;s[i]='\0';return i;}激活代码如果是文件结尾(c==eof&&i==0)的话,我们就返回-1,通过判断返回值是否为-1来决定是否继续入输入:激活代码int test1(){char s[];while((len=getline2_(s,))!=-1)printf("%s\n",s);return 0;}复制代码这样话就可以恰当初始化所有的输出了。
cin用法
cin用法
cin 用法
1. cin 用于从键盘读取数据:
cin(取cin的全称为“character input stream”)是C++中的一种输入流,
允许用户从键盘输入程序中所需的标准格式的数据。
2. 语法:
cin >> variable;
其中“variable”可以是任何类型,可以是int,float,double,字符串等。
3. 示例:
以下是用cin从键盘输入一个整数的一个示例:
#include <iostream>
int main()
{
int x;
cout<<"Enter an integer:";
cin>>x;
cout<<"You entered "<<x;
return 0;
}
4. 常用方法:
(1)cin 返回布尔值:cin 输入失败或出现错误时,cin 返回 false;输
入成功时,cin 返回 true。
(2)使用 cin.get():你可以使用 cin.get() 方法从键盘读入一个单个字符,而不是依次读入每一个字符;
(3)使用 cin.ignore():cin.ignore() 方法让你忽略从键盘输入的某个字符;
(4)使用 cin.clear():如果在某个程序中出现了“cin 出错”,则可以使用 cin.clear() 来清楚无效的缓冲器内容。
通过上述说明,我们可以看出 cin 是一个非常方便实用的输入流,能够帮助我们从键盘输入程序所需的数据。
cin函数的用法
cin函数的用法详解`cin` 是C++ 标准库中用于从标准输入流(通常是键盘)读取数据的输入流对象。
它是istream 类的一个实例,而istream 则是C++ 标准库中用于输入的基类。
以下是`cin` 的基本用法:```cpp#include <iostream>int main() {// 声明变量来存储输入的数据int number;// 使用cin 从标准输入读取一个整数,并将其存储到变量中std::cout << "Enter an integer: ";std::cin >> number;// 输出输入的整数std::cout << "You entered: " << number << std::endl;return 0;}```上述代码演示了如何使用`cin` 从用户那里获取一个整数输入。
用户输入的整数将存储在`number` 变量中,然后程序输出输入的整数。
以下是一些关于`cin` 的注意事项和更高级的用法:1. 多次输入:可以多次使用`cin` 从用户那里获取输入,以读取多个变量的值。
```cppint a, b;std::cout << "Enter two integers: ";std::cin >> a >> b;```2. 错误处理:要确保输入有效,可以检查`cin` 的状态。
例如:```cppint x;std::cout << "Enter an integer: ";while (!(std::cin >> x)) {std::cin.clear(); // 清除错误标志std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 忽略错误输入std::cout << "Invalid input. Please enter an integer: ";}```这段代码会一直要求用户输入整数,直到得到有效的输入。
cin使用方法
cin使用方法cin是C++语言中用于从标准输入流中读取数据的函数,可以用于从键盘获取用户的输入。
本文将介绍cin的使用方法,并提供一些示例来帮助读者更好地理解。
一、基本用法cin的基本用法非常简单,可以使用>>运算符将输入的数据存储到变量中。
下面是一个简单的示例:```cppint num;cin >> num;```在上面的示例中,用户将从键盘输入一个整数,并将其存储在变量num中。
二、读取不同类型的数据cin可以读取各种不同类型的数据,包括整数、浮点数、字符、字符串等。
下面是一些示例:1. 读取整数:```cppint num;cin >> num;```2. 读取浮点数:```cppfloat num;cin >> num;```3. 读取字符:```cppchar ch;cin >> ch;```4. 读取字符串:```cppstring str;cin >> str;```需要注意的是,在读取字符串时,cin会在遇到空格或换行符时停止读取。
如果需要读取包含空格的字符串,可以使用getline函数。
三、处理多个输入值有时候需要从用户输入中读取多个值,可以使用多个cin语句来实现,也可以使用cin的串联操作。
下面是一个示例:int num1, num2;cin >> num1 >> num2;```在上面的示例中,用户将依次输入两个整数,并分别存储在num1和num2中。
四、错误处理当用户输入的数据类型与预期的不一致时,cin会产生错误,并导致程序崩溃。
为了避免这种情况,可以使用cin的错误处理功能。
下面是一个示例:```cppint num;cin >> num;if(cin.fail()){cout << "输入错误,请重新输入" << endl;cin.clear();cin.ignore(numeric_limits<streamsize>::max(), '\n');}```在上面的示例中,如果用户输入的不是整数,程序会输出错误提示,并清除cin的错误状态,然后忽略掉之前输入的内容,以便重新输五、循环读取输入在一些情况下,需要循环读取用户的输入,直到满足某个条件为止。
C++输入函数的用法
C++输入函数的用法1、cin2、cin.get()3、cin.getline()4、getline()5、gets()6、getchar()附:cin.ignore();cin.get()//跳过一个字符,例如不想要的回车,空格等字符1、cin>>用法1:最基本,也是最常用的用法,输入一个数字:#include <iostream>using namespace std;main (){int a,b;cin>>a>>b;out<<a+b<<endl;}输入:2[回车]3[回车]输出:5注意:>> 是会过滤掉不可见字符(如空格回车,TAB 等)cin>>noskipws>>input[j];//不想略过空白字符,那就使用 noskipws 流控制用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束#include <iostream>using namespace std;main (){char a[20];cin>>a;cout<<a<<endl;}输入:jkljkljkl输出:jkljkljkl输入:jkljkl jkljkl //遇空格结束输出:jkljkl2、cin.get()用法1: cin.get(字符变量名)可以用来接收字符#include <iostream>using namespace std;main (){char ch;ch=cin.get(); //或者cin.get(ch);cout<<ch<<endl;}输入:jljkljkl输出:j用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格#include <iostream>using namespace std;main (){char a[20];cin.get(a,20);cout<<a<<endl;}输入:jkl jkl jkl输出:jkl jkl jkl输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.这个我还不知道怎么用,知道的前辈请赐教;3、cin.getline() // 接受一个字符串,可以接收空格并输出#include <iostream>using namespace std;main (){char m[20];cin.getline(m,5);cout<<m<<endl;}输入:jkljkljkl输出:jklj接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;如果把5改成20:输入:jkljkljkl输出:jkljkljkl输入:jklf fjlsjf fjsdklf输出:jklf fjlsjf fjsdklf//延伸://cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)//当第三个参数省略时,系统默认为'\0'//如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:#include<iostream>#include<string>using namespace std;main (){char m[3][20];for(int i=0;i<3;i++){cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;cin.getline(m[i],20);}cout<<endl;for(int j=0;j<3;j++)cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;}请输入第1个字符串:kskr1请输入第2个字符串:kskr2请输入第3个字符串:kskr3输出m[0]的值:kskr1输出m[1]的值:kskr2输出m[2]的值:kskr34、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”#include<iostream>#include<string>using namespace std;main (){string str;getline(cin,str);cout<<str<<endl;}输入:jkljkljkl输出:jkljkljkl输入:jkl jfksldfj jklsjfl输出:jkl jfksldfj jklsjfl和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数。
cin的详细用法
cin的详细用法1.cin简介cin是C++编程语言中的标准输入流对象,即istream类的对象。
cin主要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。
此外,cout是流的对象,即ostream类的对象,cerr是标准错误输出流的对象,也是ostream 类的对象。
这里的标准输出指的是终端键盘,标准错误输出指的是终端的屏幕。
在理解cin功能时,不得不提标准输入缓冲区。
当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这个换行符\n也会被存储在cin的缓冲区中并且被当成一个字符来计算!比如我们在键盘上敲下了123456这个字符串,然后敲一下回车键(\r)将这个字符串送入了缓冲区中,那么此时缓冲区中的字节个数是7 ,而不是6。
cin读取数据也是从缓冲区中获取数据,缓冲区为空时,cin的成员函数会阻塞等待数据的到来,一旦缓冲区中有数据,就触发cin的成员函数去读取数据。
2. cin的常用读取方法使用cin从标准输入读取数据时,通常用到的方法有cin>>,cin.get,cin.getline。
2.1cin>>的用法cin可以连续从键盘读取想要的数据,以空格、tab或换行作为分隔符。
实例程序如下。
#include<iostream>usingnamespace std;int main(){char a;int b;float c;stringcin>>a>>b>>c;cout<<a<<" "<<b<<" "<<c<<" "<<endl;system("pause");return 0;}在屏幕中一次输入:a[回车]11[回车]5.56[回车],程序将输出如下结果:注意:(1)cin>>等价于cin.operator>>(),即调用成员函数operator>>()进行读取数据。
C++ 中cin 输入流的多种函数用法
[语法]C++ 中cin 输入流的多种函数用法cin、cin.get()、cin.getline()、getline()、gets()函数的用法1、cin>>用法1:最根本,也是最常用的用法,输入一个数字:#include <iostream>using namespace std;main (){int a,b;cin>>a>>b;cout<<a+b<<endl;}输入:2[回车]3[回车]输出:5用法2:承受一个字符串,遇“空格〞、“TAB〞、“回车〞都完毕#include <iostream>using namespace std;main (){char a[20];cin>>a;cout<<a<<endl;}输入:jkljkljkl输出:jkljkljkl输入:jkljkl jkljkl //遇空格完毕输出:jkljkl2、cin.get()用法1:cin.get(字符变量名)可以用来接收字符#include <iostream>using namespace std;main (){char ch;ch=cin.get(); //或者cin.get(ch);cout<<ch<<endl;}输入:jljkljkl输出:j用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格#include <iostream>using namespace std;main (){char a[20];cin.get(a,20);cout<<a<<endl;}输入:jkl jkl jkl输出:jkl jkl jkl输入:abcdeabcdeabcdeabcdeabcde 〔输入25个字符〕输出:abcdeabcdeabcdeabcd 〔接收19个字符+1个'\0'〕用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的缺乏.这个我还不知道怎么用,知道的前辈请赐教;3、cin.getline() // 承受一个字符串,可以接收空格并输出using namespace std;main (){char m[20];cin.getline(m,5);cout<<m<<endl;}输入:jkljkljkl输出:jklj承受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;如果把5改成20:输入:jkljkljkl输出:jkljkljkl输入:jklf fjlsjf fjsdklf输出:jklf fjlsjf fjsdklf//延伸://cin.getline()实际上有三个参数,cin.getline(承受字符串的看哦那间m,承受个数5,完毕字符)//当第三个参数省略时,系统默认为'\0'//如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk 当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:#include<string>using namespace std;main (){char m[3][20];for(int i=0;i<3;i++){cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl; cin.getline(m[i],20);}cout<<endl;for(int j=0;j<3;j++)cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;}请输入第1个字符串:kskr1请输入第2个字符串:kskr2请输入第3个字符串:kskr3输出m[0]的值:kskr1输出m[1]的值:kskr2输出m[2]的值:kskr34、getline() // 承受一个字符串,可以接收空格并输出,需包含“#include<string>〞#include <iostream>#include <string>using namespace std;void main(void){string st ;cout<<"Input st:";getline(cin,st);cout<<st<<endl;}上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc〔在VC6中〕,因为getline有三个参数,第三个参数是字符串的完毕符,也就是当getline遇到这个完毕符时,就不在承受输入了,比方写成getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示abc ,因此对于上面出现的情况,有人说getline默认情况下以回车('\n')作为完毕符,第一次按回车表示字符串完毕,第二次按回车才开场输出。
cin和cout的用法(头文件是iostream)
cin和cout的⽤法(头⽂件是iostream)
⼀:标准输⼊函数cin
它是代表标准的输⼊设备--键盘,它是属于流的,他的⽤法和流的⽤法是⼀样的。
也就是:cin>>变量; 输⼊多个变量可以写在⼀⾏,
如:cin>>x>>y>>z; 这样写不好看,⼀般在输⼊语句的前⾯,都要做⼀个提⽰,”请输⼊×××”。
另外,这个函数是不⽤带地址符号"&"的,也不⽤写明变量类型,千万不要跟scanf混淆。
当然也不检查变量输⼊是否合法。
如:
int i;
cout<<"please input a number:"
cin>>i;
cout<<"i="<<i<<endl;
如果你输⼊的是⼀个字符如'a'那么他也不检查,但你输出的结果不是正确的,这要⼿⼯进⾏检查。
当然他也跟scanf⼀样,如果在循环内部输⼊不合法的变量值,那么也将陷⼊死循环。
如下:
/*⼀个输⼊不合法变量陷⼊死循环的例⼦*/
endl是中的操控器(Manipulator),包含于<iostream>(<iostream>),(namespace):std。
注意endl(为字母l)⽽⾮end1(数字1)。
意思:⼀⾏输出结束,然后输出下⼀⾏ 全称:end of line
endl英语意思是end of line,即⼀⾏输出结束,然后输出下⼀⾏。
。
c语言cin的用法
c语言cin的用法在C语言中,cin是一个用于从标准输入读取数据的输入流对象。
它是C++语言中的输入流对象,用于接收用户输入的数据,并将其存储到指定的变量中。
在C语言中,我们通常使用scanf函数来实现类似的功能,但在C++中,cin提供了更为方便和安全的输入方式。
cin的基本用法cin是C++中的标准输入流对象,它可以接收各种类型的数据,包括整数、浮点数、字符、字符串等。
下面是cin的基本用法:#include <iostream>using namespace std;int main() {int num;cout << "请输入一个整数:";cin >> num;cout << "您输入的整数是:" << num << endl;return 0;}在上面的例子中,我们首先声明了一个整数变量num,然后使用cout输出流向用户提示输入一个整数。
接下来,使用cin输入流接收用户输入的整数,并将其存储到num变量中。
最后,使用cout输出流显示用户输入的整数。
cin的输入操作符在C++中,cin使用输入操作符>>来接收用户输入的数据。
输入操作符>>可以用于各种类型的数据,包括整数、浮点数、字符、字符串等。
下面是一些常见的输入操作符的使用示例:输入整数int num;cin >> num; // 从标准输入读取一个整数,并存储到num变量中输入浮点数float num;cin >> num; // 从标准输入读取一个浮点数,并存储到num变量中输入字符char ch;cin >> ch; // 从标准输入读取一个字符,并存储到ch变量中输入字符串char str[100];cin >> str; // 从标准输入读取一个字符串,并存储到str数组中需要注意的是,使用cin输入字符串时,它会自动在遇到空格或换行符时停止读取,因此只能读取一个单词。
cin的用法
cin的⽤法
int val=0;
cin>>val;
上述程序先定义了⼀个整型数据val,通过cin读取数据放在val中,如果输⼊的整型数据,则读取成功,返回的是>>左侧的对象,也就是istream对象。
如果输⼊的是⽆效输⼊(⽂件结束符,或者数据类型不符),则读取失败,istream对象的状态会是⽆效。
1、我们⼀般情况下,如果想输⼊不定量的数据,通常会采⽤while(cin>>val) {...}
2、如果想处理istream对象⽆效的异常,可以多加⼀步判断
while(cin.fail())//如果cin出现了问题,那么cin调⽤fail()就会返回真
{
cin.clear();//复位标志,将流cin中的所有状态值都重设为有效状态
cout<<"键⼊的数据类型与定义的数据类型不匹配,请重新输⼊";
cin.ignore(10000,'\n');清空上次输⼊
cin>>val;//重新输⼊
}
3、⽂件结束符,Windows系统中是Ctrl+z+enter。
cin.gcount的用法
cin.gcount的用法C++中的`cin.gcount()`函数用于返回最后一次输入操作读取的字符数。
在C++中,`cin`是标准输入流对象,而`gcount()`是`istream`类的成员函数,用于获取最后一次输入操作读取的字符数。
当我们使用`cin`从标准输入流中读取数据时,可以通过`cin.gcount()`来获取我们最后一次读取的字符数。
这在某些情况下可能很有用,例如在读取固定长度的输入时,我们可以使用`gcount()`来检查实际读取的字符数是否符合预期。
下面是一个简单的示例,演示了`cin.gcount()`的用法:cpp.#include <iostream>。
#include <string>。
int main() {。
char buffer[50];std::cout << "Enter a string: ";std::cin.getline(buffer, 50);std::cout << "You entered: " << buffer << std::endl;std::cout << "Number of characters read: " <<std::cin.gcount() << std::endl;return 0;}。
在这个示例中,我们使用`cin.getline()`从标准输入中读取字符串,并将其存储在`buffer`中。
然后,我们使用`cin.gcount()`来获取实际读取的字符数,并将其输出到标准输出流中。
需要注意的是,`gcount()`函数返回的是`streamsize`类型的值,`streamsize`类型通常是`long`或`long long`类型,具体取决于编译器和平台。
cin函数的用法
cin函数的用法cin函数是C++标准输入流对象,用于从标准输入设备(通常是键盘)读取用户的输入。
它是C++中最常用的输入函数之一,它提供了一种简单而强大的方式来获取用户的输入,并将其存储到变量中。
在使用cin函数之前,需要包含头文件<iostream>,该头文件定义了cin对象及其相关操作符。
cin函数的用法如下:1. 基本输入操作符cin对象使用重载的输入操作符" >> "从用户输入中提取数据,并将其存储到变量中。
输入操作符可以用于不同类型的变量,包括整型、浮点型、字符型、字符串以及自定义的数据类型。
例如:```int age;cout << "请输入您的年龄: ";cin >> age;```上述代码会从标准输入中获取用户输入的数据,并存储到age 变量中。
2. 获取字符串cin对象可以使用重载的输入操作符" >> "获取用户输入的字符串,输入的字符串以空格或回车结束。
但如果用户输入的字符串中包含空格,则只会获取第一个单词。
例如:```string name;cout << "请输入您的姓名: ";cin >> name;```输入:"John Doe",那么name变量中的值将是"John",而不是"John Doe"。
为了获取完整的带有空格的输入字符串,可以使用getline函数。
例如:```string address;cout << "请输入您的地址: ";getline(cin, address);```输入:"123 ABC Street",那么address变量中的值将是"123 ABC Street"。
Cin
C++输入与输出—cout和cin的用法输入和输出并不是C++语言中的正式组成成分。C和C++本身都没有为输入和输出提供专门的语句结构。输入输出不是由C++本身定义的,而是在编译系统提供的I/O库中定义的。C++的输出和输入是用“流”(stream)的方式实现的。图3.2和图3.3表示C++通过流进行输入输出的过程。有关流对象cin、cout和流运算符的定义等信息是存放在C++的输入输出流库中的,因此如果在程序中使用cin、cout和流运算符,就必须使用预处理命令把头文件stream包含到本文件中: #include <iostream>当遇到无效字符或遇到文件结束符(不是换行符,是文件中的数据已读完)时,输入流cin就处于出错状态,即无法正常提取数据。
此时对cin流的所有提取操作将终止。
在IBM PC 及其兼容机中,以Ctrl + Z表示文件结束符。
在UNIX和Macintosh系统中,以Ctrl + D表示文件结束符。
当输入流cin处于出错状态时,如果测试cin的值,可以发现它的值为false(假),即cin为0值。
如果输入流在正常状态,cin的值为true(真),即cin为一个非0值。
可以通过测试cin的值,判断流对象是否处于正常状态和提取操作是否成功。
int main(){intn,s;s=0;while(cin>>n){s=s+n;}cout<<s;return 0;}一、输入流与输出流的基本操作cout语句的一般格式为:cout<<表达式1<<表达式2<<……<<表达式n;cin语句的一般格式为:cin>>变量1>>变量2>>……>>变量n;在定义流对象时,系统会在内存中开辟一段缓冲区,用来暂存输入输出流的数据。在执行cout 语句时,先把插入的数据顺序存放在输出缓冲区中,直到输出缓冲区满或遇到cout语句中的endl(或'\n',ends,flush)为止,此时将缓冲区中已有的数据一起输出,并清空缓冲区。输出流中的数据在系统默认的设备(一般为显示器)输出。一个cout语句可以分写成若干行。如cout<<"This is a simple C++ program."<<endl;可以写成cout<<"This is " //注意行末尾无分号<<"a C++ "<<"program."<<endl; //语句最后有分号也可写成多个cout语句,即cout<<"This is "; //语句末尾有分号cout<<"a C++ ";cout<<"program.";cout<<endl;以上3种情况的输出均为This is a simple C++ program.注意不能用一个插入运算符“<<”插入多个输出项,如:cout<<a,b,c; //错误,不能一次插入多项cout<<a+b+c; //正确,这是一个表达式,作为一项在用cout输出时,用户不必通知计算机按何种类型输出,系统会自动判别输出数据的类型,使输出的数据按相应的类型输出。如已定义a为int型,b为float型,c为char型,则cout<<a<<' '<<b<<' '<<c<<endl;会以下面的形式输出:4 345.789 a与cout类似,一个cin语句可以分写成若干行。如cin>>a>>b>>c>>d;可以写成cin>>a //注意行末尾无分号>>b //这样写可能看起来清晰些>>c>>d;也可以写成cin>>a;cin>>b;cin>>c;cin>>d;以上3种情况均可以从键盘输入: 1 2 3 4 ↙也可以分多行输入数据:1↙2 3↙4↙在用cin输入时,系统也会根据变量的类型从输入流中提取相应长度的字节。如有char c1,c2;int a;float b;cin>>c1>>c2>>a>>b;如果输入1234 56.78↙注意: 34后面应该有空格以便和56.78分隔开。也可以按下面格式输入:1 2 34 56.78↙(在1和2之间有空格)不能用cin语句把空格字符和回车换行符作为字符输入给字符变量,它们将被跳过。如果想将空格字符或回车换行符(或任何其他键盘上的字符)输入给字符变量,可以用 3.4.3节介绍的getchar函数。在组织输入流数据时,要仔细分析cin语句中变量的类型,按照相应的格式输入,否则容易出。二、在输入流与输出流中使用控制符上面介绍的是使用cout和cin时的默认格式。但有时人们在输入输出时有一些特殊的要求,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C++提供了在输入输出流中使用的控制符(有的书中称为操纵符)。需要注意的是: 如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件。举例: 输出双精度数。double a=123.456789012345;对a赋初值(1) cout<<a;输出: 123.456(2) cout<<setprecision(9)<<a;输出: 123.456789(3) cout<<setprecision(6);恢复默认格式(精度为6)(4) cout<<setiosflags(ios∷fixed);输出: 123.456789(5) cout<<setiosflags(ios∷fixed)<<setprecision(8)<<a;输出: 123.45678901(6) cout<<setiosflags(ios∷scientific)<<a;输出: 1.234568e+02(7) cout<<setiosflags(ios∷scientific)<<setprecision(4)<<a; 输出: 1.2346e02下面是整数输出的例子:int b=123456;对b赋初值(1) cout<<b;输出: 123456(2) cout<<hex<<b; 输出: 1e240(3) cout<<setiosflags(ios∷uppercase)<<b;输出: 1E240(4) cout<<setw(10)<<b<<','<<b; 输出: 123456,123456(5) cout<<setfill('*')<<setw(10)<<b;输出: **** 123456(6) cout<<setiosflags(ios∷showpos)<<b;输出: +123456如果在多个cout语句中使用相同的setw(n),并使用setiosflags(ios∷right),可以实现各行数据右对齐,如果指定相同的精度,可以实现上下小数点对齐。例3.1 各行小数点对齐。#include <iostream>#include <iomanip>using namespace std;int main( ){double a=123.456,b=3.14159,c=-3214.67;cout<<setiosflags(ios∷fixed)<<setiosflags(ios∷right)<<setprecision(2);cout<<setw(10)<<a<<endl;cout<<setw(10)<<b<<endl;cout<<setw(10)<<c<<endl;return 0;}输出如下:123.46 (字段宽度为10,右对齐,取两位小数)3.14-3214.67先统一设置定点形式输出、取两位小数、右对齐。这些设置对其后的输出均有效(除非重新设置),而setw只对其后一个输出项有效,因此必须在输出a,b,c之前都要写setw(10)。学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行)转载请保留作者信息;1、cin1、cin.get()2、cin.getline()3、getline()4、gets()5、getchar()1、cin>>用法1:最基本,也是最常用的用法,输入一个数字:#include <iostream>using namespace std;main (){inta,b;cin>>a>>b;cout<<a+b<<endl;}输入:2[回车]3[回车]输出:5用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束#include <iostream>using namespace std;main (){char a[20];cin>>a;cout<<a<<endl;}输入:jkljkljkl输出:jkljkljkl输入:jkljkljkljkl //遇空格结束输出:jkljkl2、cin.get()用法1:cin.get(字符变量名)可以用来接收字符#include <iostream>using namespace std;main (){charch;ch=cin.get(); //或者cin.get(ch);cout<<ch<<endl;}输入:jljkljkl输出:j用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格#include <iostream>using namespace std;main (){char a[20];cin.get(a,20);cout<<a<<endl;}输入:jkljkljkl输出:jkljkljkl输入:abcdeabcdeabcdeabcdeabcde(输入25个字符)输出:abcdeabcdeabcdeabcd(接收19个字符+1个'\0')用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.这个我还不知道怎么用,知道的前辈请赐教;3、cin.getline() // 接受一个字符串,可以接收空格并输出#include <iostream>using namespace std;main ()char m[20];cin.getline(m,5);cout<<m<<endl;}输入:jkljkljkl输出:jklj接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;如果把5改成20:输入:jkljkljkl输出:jkljkljkl输入:jklffjlsjffjsdklf输出:jklffjlsjffjsdklf//延伸://cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符) //当第三个参数省略时,系统默认为'\0'//如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl 时,输出jk当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:#include<iostream>#include<string>using namespace std;main (){char m[3][20];for(inti=0;i<3;i++){cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;cin.getline(m[i],20);}cout<<endl;for(int j=0;j<3;j++)cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;}请输入第1个字符串:kskr1请输入第2个字符串:kskr2请输入第3个字符串:kskr3输出m[0]的值:kskr1输出m[1]的值:kskr2输出m[2]的值:kskr34、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”#include<iostream>#include<string>using namespace std;main (){stringstr;getline(cin,str);cout<<str<<endl;}输入:jkljkljkl输出:jkljkljkl输入:jkljfksldfjjklsjfl输出:jkljfksldfjjklsjfl和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数5、gets() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”#include<iostream>#include<string>using namespace std;main (){char m[20];gets(m); //不能写成m=gets();cout<<m<<endl;}输入:jkljkljkl输出:jkljkljkl输入:jkljkljkl输出:jkljkljkl类似cin.getline()里面的一个例子,gets()同样可以用在多维数组里面:#include<iostream>#include<string>using namespace std;main (){char m[3][20];for(inti=0;i<3;i++){cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;gets(m[i]);}cout<<endl;for(int j=0;j<3;j++)cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;}请输入第1个字符串:kskr1请输入第2个字符串:kskr2请输入第3个字符串:kskr3输出m[0]的值:kskr1输出m[1]的值:kskr2输出m[2]的值:kskr3自我感觉gets()和cin.getline()的用法很类似,只不过cin.getline()多一个参数罢了;这里顺带说明一下,对于本文中的这个kskr1,kskr2,kskr3的例子,对于cin>>也可以适用,原因是这里输入的没有空格,如果输入了空格,比如“kskrjkl[回车]”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1[回车]kskr 2[回车]”,那么则接收“kskr,1,kskr”;这不是我们所要的结果!而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误;6、getchar() //接受一个字符,需包含“#include<string>”#include<iostream>#include<string>using namespace std;main (){charch;ch=getchar(); //不能写成getchar(ch);cout<<ch<<endl;}输入:jkljkljkl输出:j//getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用。
getline(cin,s)函数用法
getline(cin,s)函数用法Getline函数:从标准输入流cin中提取字符串。
getline(cin,s) 函数用法getline(cin,s) 是一个I/O (输入/输出) 函数,主要用来从I/O流的输入缓冲中读取一行字符,并将其存入C语言字符串s中。
这常用于C/C++编程中,它产生的主要作用是把用户输入的字符以字符串形式来存储,这样就可以对其进行各种操作,例如字符串处理,字符串比较等操作。
一、用法:1、函数原型:getline(istream& is, string str)。
2、istream& is 为输入流,一般为cin;3、string str 为存储用户输入的字符串;4、读取结束符:当用户输入回车(新行符,'\n')时才会结束;5、字符串中包括回车符(注意,这一点和cin是不同的)二、应用实例:1、提示用户输入,并存入字符串中//一般提示用户,存入字符串s中string s;cout << "please input something:" << endl;getline(cin,s);2、从任意流(如文件流、stringstream)读取字符串//从文件流fin中读取信息,存入字符串s中ifstream fin;fin.open("IOfile.txt");if(fin.is_open()){string s;getline(fin,s); //从fin读取一行字符赋值给scout << s << endl;fin.close();}elsecout << "open file failed!" << endl;三、注意事项:1、getline可以读取任意符号,包括空格以及标点符号;2、当第二个参数设定为'\n'(新行符)时,即从缓冲读取一行字符(包括空格以及标点符号)时,和使用getline的效果相同;3、当缓冲的第一个字符就是新行符时,getline会返回一个长度为零的字符串;4、使用非交互式(non interactive) 的缓冲,getline总是可以读取出一行字符,不管前面的缓冲中有没有换行符;上述就是getline(cin,s)函数的用法,主要用于从输入缓冲中读取一行字符,存入字符串中,并对用户输入的字符进行字符串处理,字符串比较等操作。
cin-get()等用法
#include<iostream> #include<string> using namespace std; main () { char ch;
file:///C|/Users/toki/Desktop/新建文本文档.txt[2011/10/31 18:15:12]
当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:
#include<iostream> #include<string> using namespace std;
file:///C|/Users/toki/Desktop/新建文本文档.txt[2011/10/31 18:15:12]
main () { char m[3][20]; for(int i=0;i<3;i++) { cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl; cin.getline(m[i],20); }
cout<<endl; for(int j=0;j<3;j++) cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;
输入:jkljkljkl 输出:jkljkljkl
输入:jkl jfksldfj jklsjfl 输出:jkl jfksldfj jklsjfl
和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,是不一样的两个函数
5、gets() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”
cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
c++中cin和cout的用法
cout的一般用法: cout<<表达式1<<表达式2<<表达式3; 如要换行可使用 cout<<endl;语句。 和cin一样,cout会自动检测表达式类型输出。
c++中 cin和 cout的用法
cin和cout是c++中的标准输入输出流。
一Байду номын сангаасcin
cin的一般用法: cin>>变量a>>变量b>>变量c; cin会自动辨别变量的类型,如a可以是char,b可以是int,c可以是float。 接收字符串时,遇到空格,tab键和换行符都会结束接收。 cin.getline()可以接收空格,cin.getline(char*,int,char),内有三个参数,第一个表示要接收的字符串,第二个表示接收字符个数,第三个表示结束字 符。当第三个省略时默认结束字符为'\0'。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[语法]C++ 中cin 输入流的多种函数用法cin、cin.get()、cin.getline()、getline()、gets()函数的用法1、cin>>用法1:最基本,也是最常用的用法,输入一个数字:#include <iostream>using namespace std;main (){int a,b;cin>>a>>b;cout<<a+b<<endl;}输入:2[回车]3[回车]输出:5用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束#include <iostream>using namespace std;main (){char a[20];cin>>a;cout<<a<<endl;}输入:jkljkljkl输出:jkljkljkl输入:jkljkl jkljkl //遇空格结束输出:jkljkl2、cin.get()用法1:cin.get(字符变量名)可以用来接收字符#include <iostream>using namespace std;main (){char ch;ch=cin.get(); //或者cin.get(ch); cout<<ch<<endl;}输入:jljkljkl输出:j用法2:cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格#include <iostream>using namespace std;main (){char a[20];cin.get(a,20);cout<<a<<endl;}输入:jkl jkl jkl输出:jkl jkl jkl输入:abcdeabcdeabcdeabcdeabcde (输入25个字符)输出:abcdeabcdeabcdeabcd (接收19个字符+1个'\0')用法3:cin.get(无参数)没有参数主要是用于舍弃输入流中的不需要的字符,或者舍弃回车,弥补cin.get(字符数组名,接收字符数目)的不足.这个我还不知道怎么用,知道的前辈请赐教;3、cin.getline() // 接受一个字符串,可以接收空格并输出#include <iostream>using namespace std;main (){char m[20];cin.getline(m,5);cout<<m<<endl;}输入:jkljkljkl输出:jklj接受5个字符到m中,其中最后一个为'\0',所以只看到4个字符输出;如果把5改成20:输入:jkljkljkl输出:jkljkljkl输入:jklf fjlsjf fjsdklf输出:jklf fjlsjf fjsdklf//延伸://cin.getline()实际上有三个参数,cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)//当第三个参数省略时,系统默认为'\0'//如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj,输入jkaljkljkl时,输出jk当用在多维数组中的时候,也可以用cin.getline(m[i],20)之类的用法:#include<iostream>#include<string>using namespace std;main (){char m[3][20];for(int i=0;i<3;i++){cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;cin.getline(m[i],20);}cout<<endl;for(int j=0;j<3;j++)cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;}请输入第1个字符串:kskr1请输入第2个字符串:kskr2请输入第3个字符串:kskr3输出m[0]的值:kskr1输出m[1]的值:kskr2输出m[2]的值:kskr34、getline() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”#include <iostream>#include <string>using namespace std;void main(void){string st ;cout<<"Input st:";getline(cin,st);cout<<st<<endl;}上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示abc ,因此对于上面出现的情况,有人说getline默认情况下以回车('\n')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。
5、gets() // 接受一个字符串,可以接收空格并输出,需包含“#include<string>”#include<iostream>#include<string>using namespace std;main (){char m[20];gets(m); //不能写成m=gets();cout<<m<<endl;}输入:jkljkljkl输出:jkljkljkl输入:jkl jkl jkl输出:jkl jkl jkl类似cin.getline()里面的一个例子,gets()同样可以用在多维数组里面:#include<iostream>#include<string>using namespace std;main (){char m[3][20];for(int i=0;i<3;i++){cout<<"\n请输入第"<<i+1<<"个字符串:"<<endl;gets(m[i]);}cout<<endl;for(int j=0;j<3;j++)cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl;}请输入第1个字符串:kskr1请输入第2个字符串:kskr2请输入第3个字符串:kskr3输出m[0]的值:kskr1输出m[1]的值:kskr2输出m[2]的值:kskr3自我感觉gets()和cin.getline()的用法很类似,只不过cin.getline()多一个参数罢了;这里顺带说明一下,对于本文中的这个kskr1,kskr2,kskr3的例子,对于cin>>也可以适用,原因是这里输入的没有空格,如果输入了空格,比如“ks kr jkl[回车]”那么cin就会已经接收到3个字符串,“ks,kr,jkl”;再如“kskr 1[回车]kskr 2[回车]”,那么则接收“kskr,1,kskr”;这不是我们所要的结果!而cin.getline()和gets()因为可以接收空格,所以不会产生这个错误;6、getchar() //接受一个字符,需包含“#include<string>”#include<iostream>#include<string>using namespace std;main (){char ch;ch=getchar();cout<<ch<<endl;}输入:jkljkljkl输出:j3、Cin.ignore()Cin.ignore()方法cin.ignore(5, 'c')的是从输入流(cin)中提取字符,提取的字符被忽略(ignore),不被使用。
每抛弃一个字符,它都要计数和比较字符:如果计数值达到5或者被抛弃的字符是'c',则cin.ignore()函数执行终止;否则,它继续等待。
它的一个常用功能就是用来清除以回车结束的输入缓冲区的内容,消除上一次输入对下一次输入的影响。
比如可以这么用:cin.ignore(1024, '\n');通常把第一个参数设置得足够大,这样实际上总是只有第二个参数'\n'起作用,所以这一句就是把回车(包括回车)之前的所以字符从输入缓冲(流)中清除出去。
4、cin.sync()清空输入缓冲区的内容在输入规定的数目float型数据中错误输入一个string型,然而后提示输入错误,转重新输入,直到输入正确,可以执行下面的程序复制内容到剪贴板程序代码int x;cin >> x;while (cin.fail()){cin.clear();cin.sync();cout << "XXXXX"<<endl;cin >> x;}5、Cin.clear()Cin.clear()用法如果输入发生错误发生,那么流状态既被标记为错误,你必须清除这些错误状态,以使你的程序能正确适当地继续运行。
要清除错误状态,需使用clear()函数。
此函数带一个参数,它是你将要设为当前状态的标志值,只要将ios::goodbit作为实参。
复制内容到剪贴板程序代码#include <iostream>using namespace std;void main(){int a;cout<<"输入一个字母:"<<endl;cin>>a; //int型变量中放了char型数据,failbit置1cout<<"cin.fail()="<<cin.fail()<<endl; //输出1cout<<"输入一个数字:"<<endl; //由于failbit值为1,输入流不能正常工作cin>>a; //故此处的输入无效cout<<a<<endl; //输出不确定值cin.clear(); //此处用cin.clear()流标志复位cout<<"cin.fail()="<<cin.fail()<<endl; //此处failbit已为0cout<<"输入一个数字:"<<endl;//但刚才输入的字符并没有从流中清除,所以cin>>a又把那个字符放入a中,流输入流又不能正常工作cin>>a;cout<<a<<endl; //输出不确定值cout<<"cin.fail()="<<cin.fail()<<endl; //在此处failbit又为1cin.clear(); //再次修复输入流cin.ignore(); //取走刚才流中的字符cout<<"输入一个数字:"<<endl; //再次接收用记输入,这次输入数字,正常输出了cin>>a;cout<<"a="<<a<<endl;//现在再看一下输入流的failbitcout<<"cin.fail()="<<cin.fail()<<endl;//输出0,表明输入流已恢复正常}6、cin.rdstate()这些当前的状态信息被包含在io_state类型的对象中。