(VS2012)C++行输入函数的使用(scanf_s,cin.getline,cin.get)
来源:互联网 发布:mac杀毒软件哪个好用 编辑:程序博客网 时间:2024/03/29 00:43
//C++Primer Plus的学习笔记
对当前学到的知识进行总结:(有遗漏和缺点,不足之处请指正.)
尽量避免两个行输入函数同时写。
我们常见的行输入函数有:
1.scanf()(一般VS里不使用不讲)
缺点:无边界,可能导致数据不安全
2.scanf_s()(参数是:“%s”,字符串名,限制读入个数)少输后面那个参数,莫非默认值是0,总之无输出。
一般运行代码:
char s1[10];
scanf_s("%s",s1,10);
函数特性:
输入字符串 识别空格处或回车换行或到达读取字符限制数量处为字符串尾,自动添加‘\0’读入。(这估计是%s这个输入格式的特性)
将剩余的字符放入流。
代码如下:
const int Arraysize=10;
char s1[Arraysize],s2[Arraysize];
scanf_s("%s",s1,10);
scanf_s("%s",s2,10);
cout<<s1<<endl;
cout<<s2<<endl;
会出现这样的结果:
输入 Hello Milk
输出Hello
Milk (自动读取了存在流中的字符串)
3.cin.getline() (参数是:字符串名,限制读入个数)少写参数报错。
函数特性:
只在到达限制读取个数或ENTER的换行符后才停止读取。
与scanf_s相比两个getline函数前后不会出现读错,或信息遗漏等问题。(好用)
4.cin.get() (参数是:字符串名,限制输入个数) 不带参数可以用于读取下一个字符就像_getch(),少写参数报错.
函数特性:
遇到Enter输入的换行符时或达到了限制输入个数结束读取,但将换行符留在输入队列中...不过比scanf_s好的一点是,可以输入空格。
问题代码:
const int Arraysize=10;
char s1[Arraysize],s2[Arraysize];
cin.get(s1,10);
cin.get(s2,10);
cout<<s1<<endl;
cout<<s2<<endl;
会出现这样的结果:
输入:
hello milk (仅能输入一次)
输出:
hello milk
并用的时候第一个get()遗留的换行符使第二个get()停止了工作。
解决方法:
中间可用cin.get()来吸收该换行符 可拼接模式在同一个类下:cin.get(s1,10).get().get(s2,10);效果相同。
- (VS2012)C++行输入函数的使用(scanf_s,cin.getline,cin.get)
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法(C++)
- cin、cin.get()、cin.getline()、getline()、gets()等函数的用法(转载)
- (转)cin、cin.get()、cin.getline()、getline()、gets()等函数的用法
- 自学研究了一下C++输入字符(串)的cin>>,cin.get,cin.getline
- 文本输入cin ,cin.getline(name,n),cin.get(name,n),cin.get()
- cin、cin.get()、cin.getline()、getline()、gets()函数的用法
- cin、cin.get()、cin.getline()、getline()、gets()函数的用法
- cin、cin.get()、cin.getline()、getline()、gets()函数的用法
- cin、cin.get()、cin.getline()、getline()、gets()函数的用法
- cin、cin.get()、cin.getline()、getline()、gets()函数的用法
- cin、cin.get()、cin.getline()、getline()、gets()函数的用法
- cin、cin.get()、cin.getline()、getline()、gets()函数的用法
- cin、cin.get()、cin.getline()、getline()、gets()函数的用法
- cin、cin.get()、cin.getline()、getline()函数的用法
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- C++ 输入函数 cin>>、cin.getline()和cin.get()区别
- hdu2846 Repository (字典树)
- js,css后面所带参数意义
- JSP 9 大内置对象详解
- POJ3974-Manacher算法--O(n)回文子串算法
- 手动删除Oracle
- (VS2012)C++行输入函数的使用(scanf_s,cin.getline,cin.get)
- Java 类修饰符、类成员修饰符
- Ubuntu 上配置DirectFB环境(亲测可用)
- POJ 1185 炮兵阵地(状态压缩DP)
- ecshop优化13-安全设置
- C++ 虚函数表解析
- 短训学习录(五)——天晴了
- vs2010中添加lua
- DB2常用命令