C++学习之 —— 输入输出
案例:输入任意空格和数字,输出其中的数字之和。
#include <iostream> using namespace std; int main() {
int sum = ; cout << "Please Input space or number:"; int i = ;
while( cin >> i) {
sum += i;
while(cin.peek() == ' ') {
cin.get();
}
if( cin.peek() == '\n') {
break;
}
}
cout << "The result is " << sum << endl;
return ;
}
目录
C++ 的 I/O 发生在流中,流是字节序列。
- 标准输出流(cout)
- 如果字节流是从内存流向设备(如显示屏、打印机、磁盘驱动器、网络连接等),这叫做输出操作。
- cout 是与流插入运算符 << 结合使用的
标准输入流(cin)
- 如果字节流是从设备(如键盘、磁盘驱动器、网络连接等)流向内存,这叫做输入操作。
- cin 是与流提取运算符 >> 结合使用的
图1 流的输入和输出
1. 标准输出流(cout)
cout << 表达式1 << 表达式2 <<……<< 表达式n;
cout << "This is " //注意行末尾无分号
<< "a C++ "
<< "program."
<< endl; //语句最后有分号
cout << "This is "; //语句末尾有分号
cout << "a C++ ";
cout << "program.";
cout << endl;
注意 : 不能用一个插入运算符“<<”插入多个输出项,如:
cout<<a,b,c; //错误,不能一次插入多项
2. 标准输入流(cin)
从键盘输入三个数,赋值给a, b, c, 有以下三种方法:
cin >> 表达式1 >> 表达式2 >> 表达式3 >> 表达式4;
cin >> a //注意行末尾无分号
>> b //这样写可能看起来清晰些
>> c
>> d;
cin >> a;
cin >> b;
cin >> c;
cin >> d;
3. 输入流(cin)方法
1、cin
- 用法1:最基本,也是最常用的用法,输入一个数字:
- 用法2:接受一个字符串,遇“空格”、“TAB”、“回车”都结束
#include <iostream>
using namespace std;
main ()
{
char a[20];
cin>>a;
cout<<a<<endl;
}
// 输入:jkljkl jkljkl //遇空格结束
// 输出:jkljkl
2、cin.get() —— 接收字符
用法1: cin.get(字符变量名)
#include <iostream>
using namespace std;
main ()
{
char ch;
ch=cin.get(); //或者cin.get(ch);
cout<<ch<<endl;
} // 输入:jljkljkl
// 输出:j
用法2: cin.get(字符数组名, 接收字符数目)
#include <iostream>
using namespace std;
int main ()
{
char a[]; // 字符串可以保存19位,最后一位是0
cin.get(a,); // 取其中的前17位
cout<<a<<endl;
} // 输入:jkl jkl jkl
// 输出:jkl jkl jkl // 输入:ythrdhtgiludfgvkhlfgxdzfxcgvhkjfxdxcvjhkhgbx
// 输出:ythrdhtgiludfgvkh (接收17个字符+1个'\0')
3、cin.getline()
cin.getline(字符串,接受数目,结束字符串) —— 接受一个字符串,可以接收空格
#include<iostream>
#include<string>
using namespace std; int main ()
{
char m[][];
for(int i=;i<;i++)
{
cout<<"\n请输入第"<<i+<<"个字符串:"<<endl;
cin.getline(m[i],, 'a');
} cout<<endl;
for(int j=;j<;j++)
cout<<"输出m["<<j<<"]的值:"<<m[j]<<endl; }
/* 运行结果
请输入第1个字符串:
111a
请输入第2个字符串:
222a
请输入第3个字符串:
333a
输出m[0]的值:111
输出m[1]的值:222
输出m[2]的值:333
#####
*/
4、getline()
和cin.getline()类似,但是cin.getline()属于istream流,而getline()属于string流,需声明 #include<string>
5、gets()
类似cin.getline(),属于string流,
6、getchar()
getchar()是C语言的函数,C++也可以兼容,但是尽量不用或少用;
4. 输出流(cout)格式控制
ios::dec 以10进制表示整数
ios::hex 以16进制表示整数
ios::oct 以8进制表示整数
ios::showbase 为整数添加一个表示其进制的前缀
ios::internal 在符号位和数值的中间插入需要数量的填充字符以使串两端对齐
ios::left 在串的末尾插入填充字符以使串居左对齐
ios::right 在串的前面插入填充字符以使串居右对齐
ios::boolalpha 将bool类型的值以true或flase表示,而不是1或0
ios::fixed 将符点数按照普通定点格式处理(非科学计数法)
ios::scientific 将符点数按照科学计数法处理(带指数域)
ios::showpoint 在浮点数表示的小数中强制插入小数点(默认情况是浮点数表示的整数不显示小数点)
ios::showpos 强制在正数前添加+号
ios::skipws 忽略前导的空格(主要用于输入流,如cin)
ios::unitbuf 在插入(每次输出)操作后清空缓存
ios::uppercase 强制大写字母
C++学习之 —— 输入输出的更多相关文章
- C++学习43 输入输出有关的类和对象
输入和输出是数据传送的过程,数据如流水一样从一处流向另一处.C++形象地将此过程称为流(Stream).C++的输入输出流是指由若干字节组成的宇节序列,这些宇节中的数据按顺序从一个对象传送到另一对象. ...
- Linux学习之输入输出重定向
转自:http://www.cnblogs.com/chengmo/archive/2010/10/20/1855805.html 多谢分享 在了解重定向之前,我们先来看看linux 的文件描述符. ...
- [深入学习C#]输入输出安全性——可变类型形參列表的变化安全性
可变类型形參列表(variant-type-parameter-lists) 可变类型形參列表(variant-type-parameter-lists )仅仅能在接口和托付类型上出现.它与普通的ty ...
- Python学习之输入输出、数据类型
#coding=utf-8 # 输入 print'100+200=',100+200 # 输入 # name = raw_input('tell me your name:') # print'hel ...
- MyBatis学习之输入输出类型
1. 传递pojo对象 Mybatis使用ognl表达式解析对象字段的值,#{}或者${}括号中的值为pojo属性名称,其中,#{}:占位符号,好处防止sql注入,${}:sql拼接符号, 简要说明 ...
- Shell基础学习(七) 输入输出重定向
命令 说明 command>file 将输出重定向到file command<file 将输入重定向到file command >> file 将输出追加到file n > ...
- VASP学习笔记--输入输出文件
一.VASP 全称Vienna Ab-initio Simulation Package,是维也纳大学Hafner小组开发的进行电子结构计算和量子力学-分子动力学模拟软件包. 它是目前材料模拟和计算物 ...
- Python学习之输入输出入门 A+B篇
描述 求两个整数之和. 输入 输入数据只包括两个整数A和B. 输出 两个整数的和. 样例输入 1 2 样例输出 3 a=input().split() print(int(a[0])+int(a[1 ...
- paper 53 :深度学习(转载)
转载来源:http://blog.csdn.net/fengbingchun/article/details/50087005 这篇文章主要是为了对深度学习(DeepLearning)有个初步了解,算 ...
- java 输入输出 io
学习JAVA 输入输出篇 java不像C中拥有scanf这样功能强大的函数,大多是通过定义输入输出流对象.常用的类有BufferedReader,Scanner.实例程序:一,利用 Scanner ...
随机推荐
- Exception类的学习与继承总结
日期:2018.11.11 星期日 博客期:023 Exception类的学习与继承总结 说起来我们上课还是说过的!老师提到了报错问题出现主要分Exception和Error两类!第一次遇见这个问题是 ...
- 右键菜单添加打开CMD选项
转载: https://www.cnblogs.com/mkdd/p/8649139.html#undefined 目前用的win7sp1系统,平时打开CMD窗口通常用三种方法:1.win+R然后输入 ...
- 一个小时就能理解Java的NIO必须掌握这三大要素!
同步与阻塞 同步和异步是针对应用程序和内核的交互而言的. 同步:执行一个操作之后,进程触发IO操作并等待(阻塞)或者轮询的去查看IO的操作(非阻塞)是否完成,等待结果,然后才继续执行后续的操作. 异步 ...
- selenium+python-autoit文件上传
前言 关于非input文件上传,点上传按钮后,这个弹出的windows的控件了,已经跳出三界之外了,不属于selenium的管辖范围(selenium不是万能的,只能操作web上元素).autoit工 ...
- 饮冰三年-人工智能-linux-09 服务
1:SSH服务(提供远程连接服务) 客户端使用Xshell 链接成功 加快连接速度 关闭防火墙 2:apache 服务(提供网页服务) 2.0 准备环境 关闭防火墙:service iptables ...
- Tensorflow生成唐诗和歌词(上)
整个工程使用的是Windows版pyCharm和tensorflow. 源码地址:https://github.com/Irvinglove/tensorflow_poems/tree/master ...
- 史上最简单的SpringCloud教程 | 第五篇: 路由网关(zuul)
在微服务架构中,需要几个基础的服务治理组件,包括服务注册与发现.服务消费.负载均衡.断路器.智能路由.配置管理等,由这几个基础组件相互协作,共同组建了一个简单的微服务系统.一个简答的微服务系统如下图: ...
- caffe调loss方法
正文 what should I do if... ...my loss diverges? (increases by order of magnitude, goes to inf. or NaN ...
- Android Https双向认证 + GRPC
keywords:android https 双向认证android GRPC https 双向认证 ManagedChannel channel = OkHttpChannelBuilder.for ...
- WebApi参数传递实例
Get 1.基础数据类型 1.1方法只含有一个形参 (1)Get传值的本质是通过url字符串拼接(2)Get传递参数本质是url字符串拼接,Request-Head头部传递,Request-Body中 ...