C++输入问题探究
突发奇想对C++输入输出做一点研究,主要是做笔试题自己写输入老是花很多时间,所以做一个总结。
对于输入多行字符串,代码如下:
#include<iostream>
#include<string>
using namespace std; int main() {
int n;
string s;
cout << "please input row:" << endl;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s;
cout << s << endl;
}
return 0;
}
但是cin不能输入空格,如果用getline(cin,s),输入一行字符串后程序直接结束了,程序中间还留有空行,代码如下:
#include<iostream>
#include<string>
using namespace std; int main() {
int n;
string s;
cout << "please input row:" << endl;
cin >> n;
for (int i = 0; i < n; i++) {
getline(cin, s);
cout << s << endl;
}
return 0;
}
原因是因为换行符也被读入了,所以将换行符去掉,在cin>>n;后加上一句cin.ignore();结果如下图,
也可以将cin.ignore();换成getchar();但是要引用#include<cstdio>
#include<iostream>
#include<string>
using namespace std; int main() {
int n;
char ch[256];
cout << "please input row:" << endl;
cin >> n;
cin.ignore();
for (int i = 0; i < n; i++) {
gets_s(ch);
cout << ch << endl;
}
return 0;
}
上面这种是采用gets_s();读取也是可行的,另外scanf(“%s”);读取字符串碰到空格和tab键会停下来
下面采用while循环的方式来存入整型数组,由于循环没有结束条件,会不断要求你输入直到达到数组最大上限,因此控制一个n值,然后跳出循环
#include<iostream>
using namespace std; int main() {
int num[100];
int i = 0;
int n = 3;
while (cin>>num[i]) {
cout << num[i] << endl;
if (i >= n)
break;
++i;
}
return 0;
}
最后说下向量的方式,向量是一种很好的数据结构,可以适当扩容,相比较数组要更节省空间,避免浪费多余资源
#include<iostream>
#include<vector>
using namespace std;
using std::vector; int main() {
int n;
cin >> n;
vector<int> nums;
int input;
while (cin>>input) {
nums.push_back(input);
if (nums.size() == n)
break;
}
for (int j = 0; j < n;++j) {
cout << nums[j] << endl;
}
return 0;
}
从结果可以看出,存进向量里面的值受到我设定n的限制
参考:
https://blog.csdn.net/praker/article/details/37612029
C++输入问题探究的更多相关文章
- [原] KVM 虚拟化原理探究(5)— 网络IO虚拟化
KVM 虚拟化原理探究(5)- 网络IO虚拟化 标签(空格分隔): KVM IO 虚拟化简介 前面的文章介绍了KVM的启动过程,CPU虚拟化,内存虚拟化原理.作为一个完整的风诺依曼计算机系统,必然有输 ...
- ASP.NET MVC - 探究应用程序文件夹
为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序. 第 2 部分:探究应用程序文件夹. MVC 文件夹 一个典型的 ASP.NET MVC Web 应用程序的文件夹内容如下 ...
- iOS中的预编译指令的初步探究
目录 文件包含 #include #include_next #import 宏定义 #define #undef 条件编译 #if #else #endif #if define #ifdef #i ...
- Python的设计哲学探究
在Python shell中输入import this就会在屏幕上打印出来Python的设计哲学,如下: In [25]: import this The Zen of Python, by Tim ...
- iOS: ARC & MRC下string内存管理策略探究
ARC & MRC下string内存管理策略探究 前两天跟同事争论一个关于NSString执行copy操作以后是否会发生变化,两个人整了半天,最后写代码验证了一下,发现原来NSString操作 ...
- iOS ARC下dealloc过程及.cxx_destruct的探究
前言 这次探索源自于自己一直以来对ARC的一个疑问,在MRC时代,经常写下面的代码: 1 2 3 4 5 6 7 8 9 - (void)dealloc { self.array = nil; ...
- 快速入门:触摸输入(使用 C#/VB/C++ 和 XAML 的 Windows 应用商店应用)
原文 http://technet.microsoft.com/zh-cn/subscriptions/hh465387 快速入门:触摸输入(使用 C#/VB/C++ 和 XAML 的 Windows ...
- 【main()的参数探究】
恩...今天研究信安的课件的时候看到一段对于main(int argc,char *argv[])的编程 所以探究探究main()函数的参数 探究程序如下: #include <cstdio&g ...
- 深入探究VC —— 链接器link.exe(4)
在程序编译完成后,生成的文件是以.obj为扩展名的对象文件,link.exe是将这些对象文件与库链接起来以创建可执行文件或动态链接库文件的工具. link.exe的输入文件包括obj文件.lib文件. ...
随机推荐
- Kubernetes 1.17.2 高可用部署
20.0.0.200 10.0.0.200 bs-k8s-master01 管理节点 2c2g 20.0.0.201 10.0.0.201 bs-k8s-master02 管理节点 2c2 ...
- 「ZJOI2013」K大数查询
「ZJOI2013」K大数查询 传送门 整体二分,修改的时候用线段树代替树状数组即可. 参考代码: #include <cstdio> #define rg register #defin ...
- ASP.NET MVC Web项目中使用Log4Net记录日志,并按照日志类型分文件存储
1.创建MvcLog4Net项目 2.创建 空的MVC项目 3.项目创建完成的效果 4.选择项目,点击鼠标右键,在弹出菜单中选择“管理解决方案的 NuGet 程序包” 5. 在NuGet浏览界面: 点 ...
- Vue 项目开发
目录 Vue 项目开发 项目目录结构解析 入口文件 main.js (项目入口) 根组件 app.vue index.html 文件入口 router 路由 components 子组件 项目初始化 ...
- 题解 nflsoj553 【六校联合训练 省选 #10】飞
题目链接 我们称"简要题意"给出的三个要求分别为"条件1","条件2","条件3". 条件3长得比较丑,考虑转化一下.把 ...
- 「Luogu P2845 [USACO15DEC]Switching on the Lights 开关灯」
USACO的又一道搜索题 前置芝士 BFS(DFS)遍历:用来搜索.(因为BFS好写,本文以BFS为准还不是因为作者懒) 链式前向星,本题的数据比较水,所以邻接表也可以写,但是链式前向星它不香吗. 具 ...
- java学习-循环结构-递归练习1-汉诺塔问题
相传在印度圣庙中,有一种被称为汉诺塔(Hanoi)的游戏.该游戏是在一块铜板装置上,有三根杆(编号A.B.C),在A杆自下而上.由大到小按顺序放置64个金盘(如下图).游戏的目标:把A杆上的金盘全部移 ...
- Redis字符串类型
字符串是Redis中最基本的数据类型,他能存储任何形式的字符串,包括二进制数据. 命令 赋值 SET key value > SET key hello OK 取值 GET key > G ...
- 关于pgsql 几个操作符的效率测试比较
关于pgsql 几个操作符的效率测试比较1. json::->> 和 ->> 测试方法:单次运行100次,运行10个单次取平均时间.测试结果:->> 效率高 5% ...
- leetcode713 Subarray Product Less Than K
""" Your are given an array of positive integers nums. Count and print the number of ...