利用cin.putback()可以很方便的分离输入输入流中的数字和字符

来源:互联网 发布:数据库笔试题 编辑:程序博客网 时间:2024/05/14 10:58

最近学习C++,通过下面这个例子才又进一步理解了一下“流”的概念,原来还有cin.putback()这函数,哈哈,就当写学习笔记。


//功能描述:从键盘按下一些列数字和字母,并以“=”结尾,编程实现数字和字幕的分离,保存到响应的vector容器中

#include <iostream>
#include <string>
#include<vector>

using namespace std ;

void main()
{
vector<double> dv ;
vector<char> cv ;
char ch;
double d ;

cin >> ch ; //注意,运行到这里cin的输入缓冲区里可能有多个按下的内容,
//但它按照cTmp的char类型只会将第一个字符输出给cTmp,
//其他按下的内容还都保存在输入缓冲区中,
//直到遇到下一个“>>”操作符有根据接受的变量类型输出缓冲区内的内容,
//如果缓冲区内的内容和接受变量的类型不匹配,则任然保留缓冲区内的类容不输出,并将输入流标志位报错,

while ( ch != '=')
{
if ( ch>='0' && ch<='9' )
{
cin.putback(ch) ;
cin >> d ; //cin会根据接受变量a的类型来决定“吐出”哪些按键的内容给赋给变量
dv.push_back(d) ;
cin >> ch ; //取缓冲区的下一个字符。
}
else
{
cv.push_back(ch) ;
cin >> ch ;
}
}


cout << "输入的数字有:" ;
for (vector<double>::iterator it = dv.begin() ; it != dv.end() ; ++it )
{


cout << *it << " " << endl ;
}
cout << "输入的字母有:" ;
for (vector<char>::iterator it = cv.begin() ; it != cv.end() ; ++it )
{


cout << *it << " " << endl ;
}


system("pause") ;
}


说明:

1、不过这里如果输入“.45”它就不能分辨这是0.45,所以如果要完善的话可能还需要进一步确定“.”后面是否是数字

0 0
原创粉丝点击