关于getline()函数好使但是有毒;

有两种操作需要进行特殊处理:

First:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <sstream>
using namespace std;
int n;
int a[];
int b[],c[];
int main()
{
while (cin>>n)
{
string s; //测试样例请用:
// 10
// 1 2 3 4 5
//6 7 8 9
string ss;
string sss;
getline(cin,s); //自己想想这一个存的啥;
getline(cin,ss); //这个呢
getline(cin,sss); //还有这个。。
cout<<s<<endl<<ss<<endl<<sss<<endl;
}
return ;
}

输出结果你蒙(应该是蒙吧,难道你知道?神犇!?)对了么??

cin>>n;进行完毕之后有一个\n;但是\n并不能存到n中,于是留在了缓冲区;

而当s进行读入一行操作时,实际上存入的是\n。

那么你在 ss中读入1 2 3 4 5 之后的换行为什么不需要另开一个string类型存储,反而6 7 8 9可以直接存到sss中去呢??想一下;

因为是读入一行操作,\n会被存入那一行中,而不是像n一样不能存储。所以不需要重开一个,你蒙对了么(馬鹿?)

还有另一种输入引发的另一个问题,(注意读取无用行的位置不同)

Second:

#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <sstream>
using namespace std;
int n;
int a[];
int b[],c[];
int main()
{
string s;
string ss;
string buf;
while (getline(cin,s))
{
int a; //如果你还是在这里插入getline(cin,buf)而不是最后;那么第一次循环buf会取代ss读入,ss就会读下一行而不是应该读取的这一行;第二次循环时s读入不了;
getline(cin,ss);
cin>>a; //这里会遗留\n;
getline(cin,buf);
}
return ;
}

PS:

这个问题为什么提出,解决什么问题呢??

题目中若要求在一组样例中读入多行则需要注意你读入的究竟是什么东西。

关于函数getline()(简单注意事项,不懂你怼我!!!)的更多相关文章

  1. Swift学习之函数和简单地控件的创建

     今天还是重复昨天做的事情--敲代码,但唯一的不同就是所学的知识不同了,我们又进一步往深得层次学习了,感觉越来越有意思了,虽然临近结束了看着大家积极性越来越低了,但是我知道我不能这样,我要比别人付出的 ...

  2. Shell函数的简单应用

    Shell函数的简单应用 在脚本内给函数传参: #!/bin/bash . /etc/init.d/functions CheckUrl (){ curl -I -s $ | head - } Che ...

  3. posix 线程(一):线程模型、pthread 系列函数 和 简单多线程服务器端程序

    posix 线程(一):线程模型.pthread 系列函数 和 简单多线程服务器端程序 一.线程有3种模型,分别是N:1用户线程模型,1:1核心线程模型和N:M混合线程模型,posix thread属 ...

  4. c语言中函数的简单介绍

    c语言中函数的介绍: 函数,简单的说就是代码的打包.存放在一个地方,当需要的时候调用. 函数分类: 1.无参无返回值函数 void func() 2.无参有返回值函数  int func() 3.有参 ...

  5. 程序员之---C语言细节22(函数返回指针注意事项&lt;悬空指针&gt;、查看进程能够分配的内存大小)

    主要内容:函数返回指针注意事项<悬空指针>.查看进程能够分配的内存大小 #include <stdio.h> char * favorite_fruit() { static ...

  6. 字符编码知识简介和iconv函数的简单使用

    字符编码知识简介和iconv函数的简单使用 字符编码知识简介 我们知道,在计算机的世界其实只有0和1.期初计算机主要用于科学计算,而我们知道一个数,除了用我们常用对10进制表示,也可以用2进制表示,所 ...

  7. tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例

    tf.nn.embedding_lookup TensorFlow embedding_lookup 函数最简单实例 #!/usr/bin/env python # -*- coding: utf-8 ...

  8. ffplay.c函数结构简单分析(画图)

    最近重温了一下FFplay的源代码.FFplay是FFmpeg项目提供的播放器示例.尽管FFplay只是一个简单的播放器示例,它的源代码的量也是不少的.之前看代码,主要是集中于某一个"点&q ...

  9. python内置函数的简单使用和介绍

    """内置函数的简单使用和介绍参考链接:https://docs.python.org/3/library/functions.html ""&quo ...

  10. 【JavaScript】使用setInterval()函数作简单的轮询操作

    轮询(Polling)是一种CPU决策怎样提供周边设备服务的方式,又称"程控输出入"(Programmed I/O). 轮询法的概念是.由CPU定时发出询问.依序询问每个周边设备是 ...

随机推荐

  1. Centos7.4+openvpn-2.4.4+easy-rsa-3.0物理机安装教程

    完整CentOS搭建OpenVPN服务环境图文教程 大福技术 关注 2016.02.17 09:28* 字数 3017 阅读 34000评论 18喜欢 21赞赏 3 对于OpenVPN环境有什么用途老 ...

  2. vue axios的使用

    详细可以看:https://www.kancloud.cn/yunye/axios/234845 这里介绍日常使用得比较多的get和post: import axios from 'axios' // ...

  3. json字符串和Json对象,以及json的基本了解

    考虑到python等语言中没有更好表示json对象的方法,所以使用JavaScript来介绍json 首先是json字符串: var str1 = '{ "name": " ...

  4. MongoDB 聚合嵌入的数组(扁平化数据+管道)

    MongoDB学习教程 先看下要操作的主要数据结构: { "_id" : "000015e0-3e9c-40b3-bd0d-6e7949f455c0", &qu ...

  5. POJ - 3020 Antenna Placement(最小覆盖路径)

    ---恢复内容开始--- https://vjudge.net/problem/POJ-3020 题意 *--代表城市,o--代表空地 给城市安装无线网,一个无线网最多可以覆盖两座城市,问覆盖所有城市 ...

  6. 小议 html 实体解析

    今天分享个小技巧,是群里一个朋友问的,"请问 + 这种类型的字符串怎么转换成我们想要的字符 + ,有什么简便的js方法吗"其实问题说简单也简单,说难也难.我们要分情况来描述问题解决 ...

  7. jQuery下ajax事件的简单分析

    昨天写了一篇关于监视页面动态生成元素问题的文章,引起了一些小小的争议,不过我从中学到了很多.文章在这,<jQuery下实现等待指定元素加载完毕>当然 动态生成的节点元素 分很多种情况,这里 ...

  8. Linux学习6-套接字

    套接字 1.什么是套接字? 套接字(socket)是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行. 2.套接字应用程序是如何通过套接字来维持一个连接的 ...

  9. nmap - 网络扫描

    NMap,Network Mapper 最早是Linux下的网络扫描和嗅探工具包 网络链接扫描; nmap -PT 192.168.1.1-111 # 先ping在扫描主机开放端口 nmap -O 1 ...

  10. 针对Jigsaw勒索软件的解锁工具

    针对Jigsaw勒索软件的解锁工具 据了解, 用户的计算机系统一旦感染了勒索软件Jigsaw,如果用户没有在一个小时之内支付赎金(0.4个比特币,价值约为150美金),那么恶意软件将会把系统中的上千份 ...