C++ 学习笔记之——输入和输出
在 C++ 中,我们通过调用输入输出流库中的流对象 cin 和 cout 来实现输入和输出。
#include <iostream>
using namespace std;
int main()
{
    int a = 0;
    float b = 0;
    char c = 0;
    cin >> a >> b >> c;
    cout << a << '\t' << b << '\t' << c << '\t' << endl;
    return 0;
}
56       Enter
5.36     Enter
a        Enter
56  5.36  a
在用 cin 进行输入时,我们不用指定具体的数据类型,系统会根据变量的类型从输入流中提取相应长度的字节。同样,用 cout 进行输出时,系统也会自动判别输出数据的类型使输出的数据按相应的类型输出。
通过 cin 读入数据时,会自动跳过输入流中的空格、tab 键和换行字符。当遇到无效字符或者文件结束符时,输入 cin 就会处于出错状态,我们可以通过判断 cin 的值来判断流对象是否处于正常状态和提取操作是否成功。
另外,我们还可以使用控制符来设置输入输出的格式。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
    int a = 256;
    float b = 3.1415926525;
    cout << b << endl;
    cout << setprecision(9) << b << endl;                               // 设置精度
    cout << setiosflags(ios::fixed) << setprecision(2) << b << endl;    // 设置小数点位数
    cout << endl << a << endl;
    cout << hex << a << endl;                               // 十六进制输出
    cout << dec << setfill('*') << setw(5) << a << endl;    // 设置域宽和填充
    cout << setiosflags(ios::showpos) << a << endl;         // 显示符号
    cout << resetiosflags(ios::showpos) << a << endl;       // 取消显示符号
    return 0;
}
3.14159
3.14159274
3.24
256
100
**256
+256
256
也可以使用 cout 的成员函数来设置输入输出的格式。
#include <iostream>
using namespace std;
int main()
{
    int a = 256;
    float b = 3.1415926525;
    cout << b << endl;
    cout.precision(9);              // 设置精度
    cout << b << endl;
    cout.precision(2);
    cout.setf(ios::fixed);         // 设置固定小数点位数
    cout << b << endl;
    cout << endl << a << endl;
    cout.setf(ios::hex, ios::basefield);
    cout << a << endl;
    cout.fill('*');             // 设置填充
    cout.width(5);              // 设置域宽
    cout << a << endl;
    cout.setf(ios::showpos);      // 显示符号
    cout << a << endl;
    cout.unsetf(ios::showpos);     // 取消显示符号
    cout << a << endl;
    return 0;
}
3.14159
3.14159274
3.24
256
100
**256
+256
256
为了与 C 语言兼容,C++ 保留了 C 中的 scanf 和 printf 函数进行输入输出,以及 getchar 和 putchar 函数进行单个字符的输入输出。
此外,我们还可以用输入输出流对象的一些成员函数来实现输入和输出。
cout.put()输出单个字符,可以连续输出cin.get()读入一个字符(包括空白字符),返回读入成功的字符,如遇到文件结束符,返回 EOFcin.get(ch)读入一个字符并赋值给变量 ch,成功读入则返回真cin.get(字符数组或指针,字符个数 n,终止字符) 读入 n-1 个字符,如遇到终止字符则提前结束cin.getline(字符数组或指针,字符个数 n,终止字符) 与上面的 cin.get 类似,但是遇到终止字符时,字符指针会移到该终止字符后面,而 cin.get 则会停留在原位置
#include <iostream>
using namespace std;
int main()
{
    char ch[20] = {0};
    cin >> ch[0];          // 读入 1
    cout.put(ch[0]);
    cout << endl;
    ch[1] = cin.get();    // 读入 2
    cout.put(ch[1]);
    cout << endl;
    cin.get(ch[2]);      // 读入 3
    cout.put(ch[2]);
    cout << endl;
    cin.get(ch, 20, '/');  // 读入 123 之后的第一个回车以及 'hello, seniusen! h' 共计 19 个字符
    cout << ch << endl;
    cin.get(ch, 20, '/');    // 读入'ello, seniusen!' 共计 15 个字符,遇到终止字符 ‘/’ 停止
    cout << ch << endl;
    cin.getline(ch, 20, '/');  // 当前字符指针还停留在字符 ‘/’ 处,直接停止读入,字符指针后移一位指向空格
    cout << ch << endl;
    cin.getline(ch, 20, '/');   // 读入' hello, seniusen!' 共计 17 个字符,遇到终止字符 ‘/’ 停止
    cout << ch << endl;
    return 0;
}
123    Enter
1
2
3
hello, seniusen! hello, seniusen!/ hello, seniusen!/    Enter
hello, seniusen! h
ello, seniusen!
 hello, seniusen!
一些其他的成员函数:
cin.eof()如果到达文件末尾(遇文件终止符)返回真,否则返回假cin.peek()返回当前指针指向的字符,但只是观测,指针仍然停留在当前位置cin.putback(ch)将字符 ch 返回到输入流,插入到当前指针位置cin.ignore(n, 终止字符) 跳过输入流中 n 个字符,若遇到终止符提前结束,此时指向终止字符后面一个位置
获取更多精彩,请关注「seniusen」!

C++ 学习笔记之——输入和输出的更多相关文章
- C++学习笔记之输入、输出和文件
		
一.流的概念 数据从内存的一个地址移动到另一个地址称为数据流动——流操作 流操作是通过缓冲区(buffer)机制实现的. 缓冲区:内存的一块区域——用作文件与内存交换数据. 数据从文件中读出:文件 → ...
 - Java学习笔记:输入、输出数据
		
相关内容: 输出数据: print println printf 输入数据: Scanner 首发时间:2018-03-16 16:30 输出数据: JAVA中在屏幕中打印数据可以使用: System ...
 - tensorflow学习笔记——多线程输入数据处理框架
		
之前我们学习使用TensorFlow对图像数据进行预处理的方法.虽然使用这些图像数据预处理的方法可以减少无关因素对图像识别模型效果的影响,但这些复杂的预处理过程也会减慢整个训练过程.为了避免图像预处理 ...
 - stm32寄存器版学习笔记06 输入捕获(ETR脉冲计数)
		
STM32外部脉冲ETR引脚:TIM1-->PA12;TIMER2-->PA0:TIMER3-->PD2;TIMER4-->PE0… 1.TIM2 PA0计数 配置步骤 ①开启 ...
 - C++基础学习3:输入和输出(cin和cout)
		
在C语言中,通常会在采用格式化输入输出函数printf和scanf用于输入或输出数据或信息.在C++语言中,C语言的这一套输入输出库我们仍能使用,但是C++语言又自定义了一套新的.更容易使用的输入输出 ...
 - C++学习笔记10_输入输出流.文件读写
		
//从键盘输入到程序,叫标准input:从程序输出到显示器,叫标准output:一并叫标准I/O //文件的输入和输出,叫文件I/O cout<<"hellow word&quo ...
 - Python基础学习笔记---5.输入\输出 I\O文件操作目录
		
在很多时候,你会想要让你的程序与用户(可能是你自己)交互.你会从用户那里得到输入,然后打印一些结果.我们可以分别使用 raw_input 和 print 语句来完成这些功能.对于输出,你也可以使用多种 ...
 - C学习笔记-字符串的格式化输出和输入
		
存储方式 字符串是内存中一段连续的char空间,以'\0'结尾 字符串就是0结尾的连续char的内存 '\0' <=> 0 <=> null printf函数,putchar函 ...
 - PHP学习笔记:输入一句话,实现单词倒序输出
		
约定:句子以空格为词语分割符号,以句号为结束符号. 实现思路: 用函数explode(separator,string,limit)对字符串进行分割,再对得到的数据最后一个成员分割切掉符号.用一个新的 ...
 
随机推荐
- Eclipse插件的卸载和安装
			
Eclipse 卸载插件: 右下角会有卸载进度 卸载完后 然后需要重启 Eclipse安装插件 选择本地下载好的插件 点击 Ok 插件下载地址:https://jaist.dl.sourceforge ...
 - 使用 get post 注意事项
			
快速判断: 如下情况使用GET方法:客户端与服务端的交互像是一个提问(如查询操作.搜索操作.读操作) 如下情况使用POST方法: 1.交互是一个命令或订单(order),比提问包含更多信 ...
 - Entity Framework  三
			
DbContext:上下文 EDM将生成从System.Data.Entity.DbContext类派生的SchoolDBEntities类,如下所示.派生DbContext的类在实体框架中被称为上下 ...
 - windows下搭建python
			
windows下搭建python 下载python版本 https://www.python.org/ 注意当前操作系统的位数,32位还是64位 同时 安装后 修改环境变量 ...
 - Openresty最佳案例 | 第1篇:Nginx介绍
			
转载请标明出处: http://blog.csdn.net/forezp/article/details/78616591 本文出自方志朋的博客 Nginx 简介 Nginx是一个高性能的Web 服务 ...
 - 轻量ORM-SqlRepoEx (五) 存储过程操作
			
.Net平台下兼容.NET Standard 2.0,一个实现以Lambda表达式转转换标准SQL语句,使用强类型操作数据的轻量级ORM工具,在减少魔法字串同时,通过灵活的Lambda表达式组合,实现 ...
 - 优雅的QSignleton (四) 通过属性器实现MonoSingleton
			
大家都出去过周六了,而我却在家写代码T.T... 接下来介绍通过属性器实现MonoSingleton. 代码如下: MonoSingletonProperty.cs namespace QFr ...
 - Linux7静默安装Oracle11g教程,亲测实用有效!
			
1.查看swap大小,若小于150M,需添加增加虚拟空间 dd if=/dev/zero of=/swapadd bs=1024 count=2006424 mkswap /swapadd swapo ...
 - Navicat Premium 连接Oracle 数据库之配置
			
Navicat Premium连接Oracle 数据库之配置 1.Oracle数据库服务器下载 Oracle官方网站下载数据库最新版本:http://www.oracle.com/technetwor ...
 - redis sentinel搭建以及在jedis中使用
			
一.redis主从搭建 1.搭建redis master 1>redis安装 mkdir -p /usr/local/webserver/redis //安装目录 cd /usr/local/w ...