C++中各种输入函数的用法总结
1.scanf()函数
原型:int scanf(const char *restrict format,......);
入口参数:第一个参数是格式字符串,它指定了输入的格式,......格式化后的字符串存取地址。
返回值:函数返回值为int类型,如果读取到了“文件结束”则返回EOF,EOF为Ctrl+z或者Ctrl+d。其他情况则返回int型数字,例如:int res = scanf("%d
%d",&a,&b);如果a,b都读取成功,则返回2;如果a,b只读取成功了一个,则返回1;如果a,b都没有读取成功,则返回0.
说明:scanf()函数是C语言库中的函数,但由于C++的向下兼容性,所以在C++中也可以使用此函数。次函数是从标准输入流stdio(一般是键盘输入)中读取数据,并将其按照指定格式输入到制定地址。
头文件:#include <stdio.h>
用例:
#include <stdio.h>
#include <iostream>
using namespace std; int main()
{
int a,b;
scanf("%d %d",&a,&b); //注意此处输入的格式,两个输入数字之间要以空格分隔开来。
printf("%d %d",a,b);
}
2.cin()类(此类命名空间都在std中,无需添加头文件)。
2.1.cin>>函数
说明:当我们从键盘输入时,有一个缓冲区,当输入结束时会将所输入的数据存到缓冲区。而cin>>的作用就是从缓冲区读数据,所以当缓冲区数据本来就有残留时,会出现读取出错的问题。值得一提的是:cin函数遇到空格、TAB、换行时读取结束。
用例:
1.输入一个字符串。
#include <iostream>
using namespace std;
void main ()
{
char a[];
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.2.cin.get()函数
原型:该函数有三种形式,分别是char ch = cin.get(), cin.get(char ch),
cin.get(array,length)
1.cin.get() 和
cin.get(char ch)的用法
这两个函数功能基本一样,都是读取缓冲区的一个字符,遇到换行符结束,但是这两个函数都不会丢弃缓冲区里边的空格 和换行符。char ch = cin.get(), cin.get(char ch)这两句可得到相同的结果。
用例:
#include <iostream>
using namespace std;
void main()
{
char ch1,ch2;
cin.get(ch1);
ch2 = cin.get(); cout<<ch1<<endl;
cout<<ch2<<endl;
}
输入:a换行
输出:a
(此处有一行空行,因为不会丢弃缓冲区里边的空行)
---------------------------------------------------------------------
2.cin.get(array,length)
这个函数是从缓冲区读取字符串,其中array是字符串接受地址,length-1是字符串长度,因为最后一个字符必须存 储'\0'结束符,所以此函数只能接受length-1个字符。
用例:
#include <iostream>
using namespace std;
void main()
{
char ch[];
cin.get(ch,);
cou<<ch<<endl;
}
输入:abcdefghi
输出:abcd
2.3.cin.getline(string str,int length)函数
说明:接收一个长度为length-1的字符串,包括空格,遇到换行结束。
#include<iostream>
using namespace std;
int main()
{
char ch[];
cin.getline(ch,);
cout<<ch<<endl;
return ;
}
输入:aaaaaaaa
输出:aaaa
3.getline()函数
原型:ssize_t getline(char **lineptr,size_t *n,FILE
*stream);(在C语言的GCC扩展定义中)
getline(cin,string
s);(在C++中)
说明:getline不是C语言的库函数,而是GCC的扩展定义或者C++库函数,在C语言中和C++中的使用是不同的.
用例1:(在C++中,应包含头文件<string>,读取字符串包含空格,遇到换行结束,不包括换行)
#include <iostream>
using namespace std;
int main()
{
string s;
getline(cin,s);
cout<<s<<endl; return ;
}
输入:abcdefgh换行
输出:abcdefgh
用例2:(在C语言中,GCC扩展定义)
待补充。。。。。。
4.gets()函数
原型:char *gets(char *buffer);
入口参数:从缓冲区读取字符串后的写入地址
返回值:读取成功后返回与入口参数buffer相同的地址。读取错误返回NULL。
头文件:<string>
说明:接收输入的字符串,没有上限,但是要保证buffer足够大,以换行结束,并将换行符转化为'\0'。
用例:
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ch[];
gets(ch);
cout<<ch<<endl;
return ;
}
输入:abcdefg回车
输出:abcdefg
5.getchar()函数
原型:int getchar(void);
返回值:读取成功返回用户输入的ASCII码,读取失败返回EOF.
头文件:<string>或者<stdio.h>
说明:接收一个字符的输入,包含空格,遇到换行符结束。
#include<iostream>
#include<string>
using namespace std;
int main()
{
char ch;
ch = getchar();
cout<<ch<<endl;
return ;
}
输入:abc回车
输出:a
C++中各种输入函数的用法总结的更多相关文章
- Python3:input()输入函数的用法
Python3:input()输入函数的用法 一.简介 input这个函数,第一个参数是提示语,它默认是空的.在我们使用input的时候,会从标准输入中读取一个string,即字符串(请注意,这里很重 ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- ecshop中foreach的详细用法归纳
ec模版中foreach的常见用法. foreach 语法: 假如后台:$smarty->assign('test',$test); {foreach from=$test item=list ...
- matlab中patch函数的用法
http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...
- C#中timer类的用法
C#中timer类的用法 关于C#中timer类 在C#里关于定时器类就有3个 1.定义在System.Windows.Forms里 2.定义在System.Threading.Timer类 ...
- C#中dynamic的正确用法
C#中dynamic的正确用法 http://www.cnblogs.com/qiuweiguo/archive/2011/08/03/2125982.html dynamic是FrameWork4 ...
- C++中typename关键字的用法
我在我的 薛途的博客 上发表了新的文章,欢迎各位批评指正. C++中typename关键字的用法
- Guava中Predicate的常见用法
Guava中Predicate的常见用法 1. Predicate基本用法 guava提供了许多利用Functions和Predicates来操作Collections的工具,一般在 Iterabl ...
- C++中const 的各种用法
C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: ; size = ; // error: assignment of read-only v ...
随机推荐
- Linux系统学习 七、网络基础—常用网络命令
1.ifconfig #查看网络(设置IP临时生效) 2.hostname [主机名] #查看或设置主机名 默认的是localhost ...
- I2C协议学习笔记
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/wzt_007/article/detai ...
- onload()方法只能在body标签中调用吗?怎么调用多个多个方法?
第一个问题: onload()方法并非只能在body标签中调用的,还可以在js中用window.onload = function() {函数名};来调用:另外img等标签也支持onload方法. 支 ...
- Codeforces Round #603 (Div. 2) F. Economic Difficulties dp
F. Economic Difficulties An electrical grid in Berland palaces consists of 2 grids: main and reserve ...
- H5混合应用之X5内核
一.X5内核介绍 X5内核是腾讯公司基于优秀开源 webkit 深度优化的浏览器渲染引擎,并且在2014年正式宣布开放给app开发者,所以现在可以在很多app上看到都是使用的X5内核实现Hybrid混 ...
- Long类型数据前端精度丢失
问题描述 后端把Long类型的数据传给前端,前端可能会出现精度丢失的情况.例如:201511200001725439这样一个Long类型的整数,传给前端后会变成201511200001725440 相 ...
- 【总结】《氨基酸新晋管理者领导力培训》第一次课_Day2_学习心得
7月26日第二天学习心得: 今天主要学习了执行贯彻和绩效反馈两大块内容,我的心得有: 一.执行层面有两大原则:--理解员工需求: 回顾了一下自己以往的经历,一般这块我用的最多的一般是在接到一个新项目的 ...
- Python - __name__=='__main__'是干啥的,以及python -m与python的区别
1. __name__=='__main__'是干啥的 先看例子,准备a.py和b.py放在同一个文件夹中 vi a.py # coding: utf-8 print("i am just ...
- 【git】代码回退指定commit
[注意:如果提交的错误代码较少,可以在本地修改成 commit之前的正确代码样子,然后再提交一次即可.不用麻烦的操作回滚.] 开发人员错误将代码提交到gitlab的远程dev分支,回滚方法如下: 1. ...
- C#上手练习7(构造方法语句)
创建类的对象是使用“类名 对象名 = new 类名()”的方式来实现的. 实际上,“类名()”的形式调用的是类的构造方法,也就是说构造方法的名字是与类的名称相同的. 构造方法的定义语法形式如下. 访问 ...