利用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,所以如果要完善的话可能还需要进一步确定“.”后面是否是数字
- 利用cin.putback()可以很方便的分离输入输入流中的数字和字符
- cin和cin.get()在输入字符时的区别
- scanf输入字符和数字的问题
- 输入流cin的状态
- 混合输入数字和字符
- 读取数字的循环,用cin表达式的值判断错误输入并清除cin流接受新的输入
- 手机的字母的输入,cin不可以接受enter键,scanf可以接受,输入不是整个字符串而是输入的是单个单个的字符
- 定义指针函数,输入字符串求其中的字母、数字和其它字符的个数
- 输入一个字符串,编写函数统计该字符串中的字母、数字和其他字符的个数;
- C++ Cin输入数字时 输入字母 Cin状态出错
- 文件的输入和输出-cin用法
- cin.putback
- 输入一行字符串分别统计出字母。数字。空格和其他字符 *利用while循环语句条件输入的字符为"\n"
- cin输入的问题
- 自学研究了一下C++输入字符(串)的cin>>,cin.get,cin.getline
- 输出输入字符中的数字个数
- 输入字符的分类和Byte类型数字的比较
- cin>>i的返回值的问题 & cin输入流
- 第39课第三题
- 短信服务平台
- encodeURIComponent() 和encodeURI()
- zoj 3705 Applications(粗暴模拟题)
- 杭电ACM 2055:An easy problem
- 利用cin.putback()可以很方便的分离输入输入流中的数字和字符
- python操作日期和时间的方法
- struts2学习笔记之六(Action访问servlet的API以及复制项目小技巧)
- 编译器手工开栈
- hdu 1081 To The Max(最大连续子序列推广到二维)
- php CURL两个基本实例
- CodeForce 492C(贪心)
- 用户体验测试方法
- 数据结构的堆栈、内存中的堆栈