一、分类

1.标准输入输出
  键盘输入,显示器输出。
2.文件输入输出
  以外存为对象,即硬盘、光盘等。
3.串输入输出
  对内存中指定空间进行输入输出。

二、c语言中的输入输出

#include <stdio.h>
1.scanf,printf
  char a,b;
  scanf("%c%c",&a,&b);
  printf("%c%c",a,b);
  scanf用回车来判断输入是否结束,也就是说不能将回车当做字符赋值给a,b。
  %c时可以得到tab,空格,但不能得到回车
  %s时不能得到tab,空格,更不能得到回车,因为是以tab,回车作为字符串开始结束的标志,即字符串中不包含空白字符。
  printf可以指定宽度:
  e.g.    int a=365,float b=3.14;
  则printf("%5d",a)=<空格><空格>365(宽度5为整个数的宽度)
  printf("%10f",b)=<空格><空格>3.140000(宽度10为整个数的宽度,小数点算一位)

  printf("%10.4f",b)=<空格><空格><空格><空格>3.1400(宽度10为整个数的宽度,宽度4为小数部分宽度,小数点算一位)

  若改10.4f为0.4f,则只指定小数的位数。

  scanf也可以指定宽度:
  e.g.    scanf("%2d", &x);
  x输入123,则x=12,即只要输入的前2位。

  scanf格式控制:
  %d,%i=有符号10进制数
  %u=无符号10进制数
  %o=无符号8进制数
  %x,%X=无符号16进制数
  %c=单个字符
  %s=字符串,将字符串送到一个字符数组中,必须是char[]而不是char*,在输入时以第一个非空白字符开始,以第一个空白字符结束。字符串以串结束标志 ‘\0’ 作为其最后一个字符。
  %f,%e、E,%g、G=实数,都一样。

  printf格式控制:
  %f=默认6位小数
  %e、E=指数形式输出实数
  %g、G=以%f和%e两者较短的一个形式输出

2.getchar,putchar
  getchar可以一直输入字符(包括tab,空格,但不包括回车),直到遇到回车,也就是说不能将回车当做字符赋值。遇到回车后,只取缓冲区的第一个字符来赋值。
  putchar输出指定的单一字符。
  e.g.    char a=getchar();
  putchar(a);
3.gets,puts
  gets可以接受空白符,以回车为结束标志,还是不能得到回车字符;
  puts就是相应的输出,输出完了会自动换行,不用认为加上换行符。

三、c++中的输入输出

#include <iostream>
c++将数据的输入输出,即数据从一个对象传送到另一个对象的过程称为流,内存中有缓冲区来存放数据,缓冲区里的数据就是流。
endl立即输出流中所有数据并换行,\n只换行。
1.cin、cout
  using namespace std;
  cin>>a>>b;
  cout<<a<<b;
  e.g. 若输入字符串,char a[20];
  cin<<a;
  则空白字符为开始和截止字符,不能识别tab,空格。
  缓冲区中有数据时cin就不会请求键盘输入,而是从缓冲区读取。
2.cin.get,cout.put
  cin.get分为4种,即无参,1个参数,2个参数,3个参数。
  cin.get():无参时,相当于c语言的getchar(),即a=cin.get(),可用cout.put(a)输出;
  cin.get(ch):1个参数时,同无参;
  cin.get(字符数组名,接收字符数目):2个参数时,是对于数组用的,不可用cout.put(a)输出,因为是数组;
  e.g. char a[20];
  cin.get(a,10);
  cout<<a;
  把输入字符的前9个字符存入a中,后面的舍弃,数组第十个单元是'\0'。
  cin.get(字符数组名,接收字符数目,结束符):3个参数时,跟2个参数一样,只不过一般都省略了结束符,只用2个参数的cin.get;
3.cin.getline
  跟cin.get的2个参数用法一样
4.getline

  要include<string>,不是iostream里的。

  e.g. string a;
  getline(cin,a);

  while(getline(cin,a)){...}//连续读至文末

  a中可包含空白字符。

注意:c语言是用函数实现输入输出,c++是用类对象实现的。

C/C++ 标准输入、输出的更多相关文章

  1. Java 输入/输出——重定向标准输入/输出

    在System类中提供了如下三个重定向标准输入/输出方法. static void setErr​(PrintStream err) Reassigns the "standard" ...

  2. C/C++-标准输入/输出重定向为文件输入/输出

    /* Time: 2017-02-22 11:11:15 Describe: C++程序将标准输入/输出重定向为文件输入/输出. */ #include <iostream> #inclu ...

  3. Linux系统教程 标准输入/输出和重定向

    1. 标准输入与输出 我们知道,执行一个shell命令行时通常会自动打开三个标准文件,即标准输入文件(stdin),通常对应终端的键盘:标准输出文件(stdout)和标准错误输出文件(stderr), ...

  4. java SE :标准输入/输出

    一 标准设备输入/输出 A 标准输入/输出类 System B 控制台读写类 Console  标准输入/输出类  System 1 标准输入.标准输出.错误输出流 // 标准输入流 public f ...

  5. Java重定向标准输入/输出

    在System类中提供了三个重定向标准输入/输出的方法static void setErr(PrintStream err) 重定向“标准”错误输出流static void setIn(InputSt ...

  6. java 输入输出IO流:标准输入/输出System.in;System.out;System.err;【重定向输入System.setIn(FileinputStream);输出System.setOut(printStream);】

    Java的标准输入输出分别通过System.in和System.out来代表的,在默认情况下它分别代表键盘和显示器,当程序通过System.in来获取输入时,实际上是从键盘读取输入 当程序试图通过 S ...

  7. Java标准输入/输出/错误流

    只要使用OutputStream对象就可使用System.out和System.err对象引用.只要可以使用InputStream对象就可以使用System.in对象. System类提供了三个静态设 ...

  8. Java-输入输出

    1. 流的分类 java.io 1.1 输入和输出流 File类不能访问文件内容本身,需要使用输入/输出流 输入输出流的方向是相对与内存读写的方向. 1.2 字节流和字符流 字节流 InputStea ...

  9. java输出重定向

    Java的标准输入,输出分别是通过System.in和System.out来代表.默认情况下他们分别代表键盘和显示器. System类里提供了3个重定向标准输入,输出的方法. static void ...

  10. C++_IO与文件1-输入与输出概述

    为了方便起步先从istream类对象cin和ostream类对象cout开始,了解输入和输出的基本方法: 同时使用ifstream和ofstream对象进行文件的输入和输出: 然后详细学习cin和co ...

随机推荐

  1. HttpClient服务端发送http请求

    本来以为对跨域问题的处理已经比较熟练了.可以通过jsonp.document.domain+iframe.window.name.window.postMessage.服务器上设置代理页面来解决.但还 ...

  2. js闭包的本质

    js之所以会有闭包,是因为js不同于其他规范的语言,js允许一个函数中再嵌套子函数,正是因为这种允许函数嵌套,导致js出现了所谓闭包. function a(){ function b(){ }; b ...

  3. 设计模式-(8)外观(swift版)

    一,概念 为子系统中的一组接口提供一个统一的接口.外观模式定义了一个更高层次的接口,这个接口使得这一子系统更加容易使用. 二,结构图 (1)SubSystem子系统类:每个子系统定义了相关功能和模块的 ...

  4. HDU2444 The Accomodation of Students —— 二分图最大匹配

    题目链接:https://vjudge.net/problem/HDU-2444 The Accomodation of Students Time Limit: 5000/1000 MS (Java ...

  5. 【转】Commonjs规范及Node模块实现

    前言: Node在实现中并非完全按照CommonJS规范实现,而是对模块规范进行了一定的取舍,同时也增加了少许自身需要的特性.本文将详细介绍NodeJS的模块实现 引入 nodejs是区别于javas ...

  6. 08_传智播客iOS视频教程_Foundation框架

    比如产生随机数.这个功能要你写吗?不用,因为苹果已经写好了.后面想开发一个ios程序,往界面上放一个按钮,实际上这个按钮不用你写别人已经写好了,你就拿过来拖一下就可以了. 框架是1个功能集 苹果或者第 ...

  7. Ubuntu10.04安装与配置nfs服务器(转载)

    转自:http://blog.chinaunix.net/uid-25885064-id-3177969.html 1.安装nfs服务   $ sudo apt-get install nfs-ker ...

  8. PCB Genesis SET拼板(圆形板拼板) 实现效果(二)

    越来发现Genesis采用Surface多边形数据结构的重要性了,当撑握了多边形缩放,交集, 差集,并集等算法, 想实现PCB拼板简直轻而易举了;当然借助多边形算法可以开发出更多的PCB实用的工具出来 ...

  9. Spring 中 ApplicationContext 和 BeanFactory 的区别

    //从ApplicationContext 中取 bean ApplicationContext ac = new ClassPathXmlApplicationContext ( "com ...

  10. javascript监听值变化

    最近面了有道前端实习,人品爆发一面过了.但是在一面中面试官问了一个问题”MVC用javascript如何实现?如果实现双向绑定?值变化监听?“ 当时我回答”js好像没函数进行值变化监听“ 后来想想很不 ...