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++的几个输入流的更多相关文章

  1. 输入流和字符串互转,InputStream2String,String2InputStream

    输入流转字符串 public static String InputStream2String(InputStream in) { InputStreamReader reader = null; t ...

  2. 在.NET中使用管道将输出流转换为输入流

    最近在写一段代码,将本地文件压缩加密后发送到服务器,发送到服务器的类用一个输入流作为参数获取要上传的数据,而压缩类和加密类都是输出流. 如何将输出流转换为输入流,最直观的方法是缓存输出流的全部内容到内 ...

  3. 详解PHP输入流php://input

    在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组.所以,这里主要探讨php输入流php://input 对一php://inpu ...

  4. java读取输入流

    java读取输入流两种 private static byte[] readStream(InputStream in){ if(in==null){ return null; } byte[] bu ...

  5. PHP 输入流 php://input

    在使用xml-rpc的时候,server端获取client数据,主要是通过php输入流input,而不是$_POST数组.所以,这里主要探讨php输入流php://input   对一php://in ...

  6. Struts2文件下载找不到输入流异常

    先发异常 Can not find a java.io.InputStream with the name [downloadFile] in the invocation stack. Check ...

  7. 字符输入流Reader简要概括

    字符输入流Reader组成结构 本篇将对JAVA I/O流中的字符输入流Reader做个简单的概括: 总得来说,每个字符输入流类都有一个对应的用途,如下: 字符流基类:Reader 字节流转字符流:I ...

  8. [转]java 输出流转输入流

    ByteArrayOutputStream.toByteArray ByteArrayInputStream StringWriter.toString StringReader 字符流和二进制流是j ...

  9. java io系列14之 DataInputStream(数据输入流)的认知、源码和示例

    本章介绍DataInputStream.我们先对DataInputStream有个大致认识,然后再深入学习它的源码,最后通过示例加深对它的了解. 转载请注明出处:http://www.cnblogs. ...

  10. 文件输入流 FileInputStream类 文件输出流FileOutputStream ---转载

    转载自---http://blog.csdn.net/hguisu/article/details/7418161 111:文件输入流: FileInputStream可以使用read()方法一次读入 ...

随机推荐

  1. 阿里云ECS新增端口

    由于本地开多台虚拟机玩集群,发现内存有点吃不消,好奇心的驱使下,买了一台阿里云玩玩,发现外面访问不了端口. 解决: 登陆阿里云网站,进入控制台,点击云服务器ECS 进入服务器控制台,点击要选择的服务器 ...

  2. docker 卸载与安装

    卸载 Docker自17.03版本开始分为两个版本Docker CE和Docker EE: Docker CE:Docker Community Edition,即Docker社区版 Docker E ...

  3. flask框架(一):初入

    1.装饰器回顾 # -*- coding: utf-8 -*- # @Author : Felix Wang # @time : 2018/7/3 17:10 import functools &qu ...

  4. 技巧:在 C/C++中如何构造通用的对象链表[转]

    原文:技巧:在 C/C++中如何构造通用的对象链表 虚拟链表和类链表可以很好地实现这一点 您是否做过这样一个项目,它要求您在内存中保存数目不定的若干不同对象?对于某些情况,二叉树是最佳选择,但在通常情 ...

  5. (编程语言+python+变量名+垃圾回收机制)*知识点

    编程语言 从低级到高级的发展的过程 1.机器语言 计算机是基于电工作的.(基于高.低电平 1010010101011) 如果用机器语言表现一个字符的意思需要多段代码的行.但是计算机读取的快. 所以机器 ...

  6. BZOJ 4814 Luogu P3699 [CQOI2017]小Q的草稿 (计算几何、扫描线、set)

    题目链接 (BZOJ) http://lydsy.com/JudgeOnline/problem.php?id=4814 (Luogu) https://www.luogu.org/problem/P ...

  7. Jmeter -- 脚本录制

    步骤如下: 1. 添加http代理服务器(Add -> Non-TestElement -> HTTP(S)Test Script Recorder) 2. 对http代理进行配置,如下图 ...

  8. 使用Jmeter对观影券查询接口做性能测试

    线程数:虚拟用户数.一个虚拟用户占用一个进程或线程.设置多少虚拟用户数在这里也就是设置多少个线程数. 准备时长: 设置的虚拟用户数需要多长时间全部启动.如果线程数为20 ,准备时长为10 ,那么需要1 ...

  9. 安装ubuntu是所需的引导

    title Install Ubuntu root (hd0,0) kernel (hd0,0)/vmlinuz boot=casper iso-scan/filename=/ubuntu-16.04 ...

  10. 2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础

    2018-2019-2 20165205 网络对抗技术 Exp9 Web安全基础 1.基础问题 SQL注入攻击原理,如何防御 原理: SQL注入指攻击者在提交查询请求时将SQL语句插入到请求内容中,同 ...