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

原文地址:https://www.cnblogs.com/51selfstudy/p/10556770.html

时间: 2024-08-30 10:27:09

C++输入问题探究的相关文章

解决query查询输入geometry参数查询不到而通过where条件可以查到的问题

解决query查询输入geometry参数查询不到而通过where条件可以查到的问题 原因: 是因为geometry的坐标系和所要查询的图层不一样导致的(问题引起是由于底图中叠加了不同的坐标系的引起的) 问题描述: 我在公司做好的功能并且测好了,到现场出了问题,发现通过where语句查询时正常的,拉宽查询不正常.并且通过网页打开图层查询请求页面,手动输入代码中得到的geometry查询是可以查到数据的. 问题解决过程: 通过fiddler跟踪请求的http路径(因为arcgisAPI请求arcg

探究PHP底层

探究PHP底层 1.PHP是什么? PHP 指的是我们从外面看到的一套完整的系统.这听起来有点糊涂,但其实并不复杂(PHP4 内部结构图).从功能上来分:我们可以分为三部分: 1. 解释器部分(Zend 以引擎),负责对输入代码的分析.翻译和执行: 2. 功能性部分(PHP功能函数以及扩展),负责具体实现语言的各种功能(比如它的函数等等): 3. 接口部分(SAPI),负责同 WEB 服务器的会话等功能. Zend包括了第一部分的全部和第二部分的局部,PHP内核 包括了第二部分的局部和第三部分的

redis-cluster集群扩容以及扩容client读写数据影响的探究

一直以来,从来只是对codis做过slot的动态迁移(同扩容)而且也只是线下环境,而没有对线上的redis-cluster做过扩容和迁移.早就想有空测试一下却一直没有实际去做,然而就在今天收到了产品部的需求,要对线上某个业务线的redis-cluster做扩容... 这也正印证佛家那就话,你结下的因,早晚成你的果.(不懂,瞎说的) 借此契机,一探究竟. 测试环境: 主机类型:虚拟机  操作系统:centos6.5_x86_64 配置:1×1 4G 内存 1 构建集群 (具体过程略) 在单台主机上

ASP.NET MVC - 探究应用程序文件夹

为了学习 ASP.NET MVC,我们将构建一个 Internet 应用程序. 第 2 部分:探究应用程序文件夹. MVC 文件夹 一个典型的 ASP.NET MVC Web 应用程序的文件夹内容如下所示:   应用程序信息 PropertiesReferences 应用程序文件夹 App_Data 文件夹Content 文件夹Controllers 文件夹Models 文件夹Scripts 文件夹Views 文件夹 配置文件 Global.asaxpackages.configWeb.conf

深入探究递归神经网络:大牛级的训练和优化如何修成?

深入探究递归神经网络:大牛级的训练和优化如何修成? 摘要:不同于传统FNN,RNN无需在层面之间构建,同时引入定向循环,能够更好地处理高维度信息的整体逻辑顺序.本文中,MIT的Nikhil Buduma将带您深入探析RNN的原理.训练和优化等各方面的内容,以及RNN已经获取的一些成就. 在深度学习领域,传统的前馈神经网络(feed-forward neural net,简称FNN)具有出色的表现,取得了许多成功,它曾在许多不同的任务上——包括手写数字识别和目标分类上创造了记录.甚至到了今天,FN

iOS: ARC &amp; MRC下string内存管理策略探究

ARC & MRC下string内存管理策略探究 前两天跟同事争论一个关于NSString执行copy操作以后是否会发生变化,两个人整了半天,最后写代码验证了一下,发现原来NSString操作没我们想的那么简单,下面就让我们一起看看NSString和NSMutableString在MRC下执行retain,copy,mutableCopy,以及ARC下不同的修饰__weak, __strong修饰赋值究竟发生了什么. 一.验证代码如下: - (void)testStringAddress { i

Python下探究随机数的产生方法

资源下载 #本文PDF版下载 Python下探究随机数的产生方法(或者单击我博客园右上角的github小标,找到lab102的W7目录下即可) #本文代码下载 几种随机数算法集合(和下文出现过的相同) 前言 我们对于随机数肯定不会陌生,随机数早已成为了我们经常要用到的一个方法,比如用于密码加密,数据生成,蒙特卡洛算法等等都需要随机数的参与.那么我们的电脑是怎么才能够产生随机数的呢?是电脑自己的物理存在还是依靠算法?它到底是如何工作的呢?所以我也对这些问题有着好奇心,所以找到了许多资料学习了一下,

Android:日常学习笔记(6)——探究活动(3)

Android:日常学习笔记(6)--探究活动(3) 活动的生命周期 返回栈 Android中的活动是可以叠加的,我们每启动一个新活动,就会覆盖在原来的活动上,点击Back以后销毁最上面的活动,下面的活动就会重新显现出来.Android是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合. 默认情况下,每当我们启动一个新的活动,他会在返回栈中入栈,并处于栈顶位置.而每当我们按下Back或者Finish以后,处于栈顶位置的活动会出栈. 活动的状态 运行状态(栈顶的元素).暂停

Android中谷歌语音识别应用探究

引言 由于为期半年的项目结束了,进入了一段“疗养”的真空期,因此有时间可以去归纳整理项目的经验,学习新的姿势与技巧,对自己技术水平也是一种提升.另外,个人懒癌症严重,为强迫自己努力学习,立了一些福来阁(比如没有写出博客女装什么的咳咳,我一定会拔旗成功的,哼),总体来说督促效果还是挺不错的. 项目中使用的Android和linux进行客户端的开发,结合项目的实战经验,七月份写的博客内容主要围绕Android开发进行,研究的内容预定为:Android中谷歌语音搜索功能探究(开篇),app应用意外关闭