C/C++的几个输入流
C:
1.scanf( )
存在于<stdio.h>(C++为<cstdio>)中,根据stdin读取数据并根据参数格式进行赋值,以第一个非空格字符(空格字符如:空格,制符表,换行符)为起点。一般键盘输入时,返回成功赋值的参数的个数如:0(失败),1(成功赋值一个),2,...
开始&结束标志: 常见的数值赋值、单个字符赋值时,以第一个非空格字符为开始标志,以空格字符为结束标志。但是以换行符为键盘缓冲区结束标志(整数、字符、字符串都会出现下图情况)。所以使用"%s"进行字符串赋值时,无法赋值空格字符。
附,格式说明:
| i |
整数 |
|---|---|
| d/u | 十进制整数(u是无符号数) |
| o | 八进制整数 |
| x | 十六进制整数 |
| f |
浮点数(似乎是所有进制的,如16进制浮点数前面加 '0x') |
| e | e指数形式的浮点数 |
| g | g自动选择合适的类型 |
| c | 字符 |
| s | 字符串 |
| p | 指针地址 |
| %hd、%hu | short int、unsigned short int |
|---|---|
|
%d、%u |
int、unsigned int |
| %ld、%lu | long int、unsigned long int |
| %lld、%llu | long long int、unsigned long long int、 |
| %f | float |
| %lf | double |
| %Lf | long double |
| %c | char |
| %s | char * / char[ ] |
2.getchar( )
存在于<stdio.h>中,返回读取的字符的ASCII码,返回类型为int。(一个字符一个字符地读取)
一般情况下getchar( )会开启输入(如:键盘)缓冲区,并且该缓冲区以换行符为结束。但是此时getchar( )只读取了一个字符,导致换行符还存在于缓冲区内。
第一次输入“A”+“回车”;//可以明显地看到b=“回车”;
第二次输入“YYY”+“回车”
第三次输入“EEE”+“回车”
综上,无delim,不丢弃任何字符,一次读一个字符,包括空格符、制表符、换行符。
如图:(第16行while的条件用来去除缓冲区中的“换行符”)
3.gets(char * str)
存在于<stdio.h>中,原型为char * gets ( char * str ),返回str。
以换行符为结束标志,将所有字符(包括空格)赋值给字符数组,并丢弃delim
目前来看只能进行 字符数组 的赋值,如图
C++:
4.std::getline(istream& is, string& str, char delim)
原型:
- istream& getline (istream& is, string& str, char delim);
- istream& getline (istream&& is, string& str, char delim);
- istream& getline (istream& is, string& str);
- istream& getline (istream&& is, string& str);
存在于<string>中,可以认为是gets( )的string版,返回str,并丢弃delim。
输入流必须指定,默认情况下终结符为“换行符”(“\n”)。
5.std::istream::getline(char* s, streamsize n, char delim)
存在于<istream> <iostream>中,可以认为是gets( ),返回istream该对象的指针,并丢弃delim。
原型:
- istream& getline (char* s, streamsize n );
- istream& getline (char* s, streamsize n, char delim );
6.std::istream::get()
存在于<istream> <iostream>中,可以认为是gets( ),因为重载函数比较多。返回istream该对象的指针,不丢弃delim。
原型
- int get();
- istream& get (char& c);
- istream& get (char* s, streamsize n);
- istream& get (char* s, streamsize n, char delim);
- istream& get (streambuf& sb);
- istream& get (streambuf& sb, char delim);
C/C++的几个输入流的更多相关文章
- 输入流和字符串互转,InputStream2String,String2InputStream
输入流转字符串 public static String InputStream2String(InputStream in) { InputStreamReader reader = null; t ...
- 在.NET中使用管道将输出流转换为输入流
最近在写一段代码,将本地文件压缩加密后发送到服务器,发送到服务器的类用一个输入流作为参数获取要上传的数据,而压缩类和加密类都是输出流. 如何将输出流转换为输入流,最直观的方法是缓存输出流的全部内容到内 ...
- 详解PHP输入流php://input
在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组.所以,这里主要探讨php输入流php://input 对一php://inpu ...
- java读取输入流
java读取输入流两种 private static byte[] readStream(InputStream in){ if(in==null){ return null; } byte[] bu ...
- PHP 输入流 php://input
在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组.所以,这里主要探讨php输入流php://input 对一php://in ...
- Struts2文件下载找不到输入流异常
先发异常 Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check ...
- 字符输入流Reader简要概括
字符输入流Reader组成结构 本篇将对JAVA I/O流中的字符输入流Reader做个简单的概括: 总得来说,每个字符输入流类都有一个对应的用途,如下: 字符流基类:Reader 字节流转字符流:I ...
- [转]java 输出流转输入流
ByteArrayOutputStream.toByteArray ByteArrayInputStream StringWriter.toString StringReader 字符流和二进制流是j ...
- java io系列14之 DataInputStream(数据输入流)的认知、源码和示例
本章介绍DataInputStream.我们先对DataInputStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:http://www.cnblogs. ...
- 文件输入流 FileInputStream类 文件输出流FileOutputStream ---转载
转载自---http://blog.csdn.net/hguisu/article/details/7418161 111:文件输入流: FileInputStream可以使用read()方法一次读入 ...
随机推荐
- 关于windows 设备驱动重要的事实
1. windows采用设备树描述所有挂在系统总线上的设备,每个设备对应一个节点. 2.每个设备有自己的device object stack/driver stack. 一个物理上的设备对应多个de ...
- sh_14_字符串定义和遍历
sh_14_字符串定义和遍历 str1 = "hello python" str2 = '我的外号是"大西瓜"' print(str2) print(str1[ ...
- Spring Boot教程(四十二)LDAP来管理用户信息(2)
使用spring-data-ldap的基础用法,定义LDAP中属性与我们Java中定义实体的关系映射以及对应的Repository @Data @Entry(base = "ou=peopl ...
- Codeforces 963 A. Alternating Sum(快速幂,逆元)
Codeforces 963 A. Alternating Sum 题目大意:给出一组长度为n+1且元素为1或者-1的数组S(0~n),数组每k个元素为一周期,保证n+1可以被k整除.给a和b,求对1 ...
- 2.nohup和&后台运行,进程查看及终止
1.nohup和& 语法:nohup Command [ Arg … ] [& ] nohup:不挂断地运行命令 &:在后台运行 示例:nohup java -jar app2 ...
- MERGE INTO 解决大数据量复杂操作更新慢的问题
现我系统中有一条复杂SQL,由于业务复杂需要关联人员的工作离职三个表,并进行分支判断,再计算人员的字段信息,由于人员多,分支多,计算复杂等原因,一次执行需要5min,容易卡死,现在使用MERGE IN ...
- python接口自动化:python3.6中import Crypto.Hash报错的解决方案
一:问题 python3.6中算法加密引入包Crypto报错,即便安装了: pip install crypto pip install pycrypto pip install pycryptodo ...
- JS基础_原型对象
原型prototype 我们创建的每一个函数,解析器都会向函数中添加一个属性prototype 这个属性,对应着一个对象,这个对象就是我们所谓的原型对象 1.如果函数作为普通函数调用prototype ...
- laravel中跟据某个特定顺序去排序查出来的数据:FIND_IN_SET
//返回有顺序的客户id $customer_ids = $customer->bespeakTime($uid); $res = Customer::with('customer_indust ...
- 解释HTTP中Get和Post。它们有什么区别,哪个使用时更加安全?
Get和Post都是浏览器向网页服务器提交数据的方法. Get把要提交的数据编码在url中,比如/workinfo.jsp/mianshiti?key1=value1&key2=value2中 ...