关于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. WEB入门之十一 JS面向对象

    学习内容 JavaScript类的定义模式 JavaScript继承的实现 JavaScript抽象类 JavaScript解析XML 能力目标 深入了解JavaScript类的定义模式 理解Java ...

  2. UML类图学习笔记

    http://note.youdao.com/noteshare?id=d5af220db7081dda73511fcb7b4da390

  3. VMware Workstation 12序列号:

    VMware Workstation 12序列号: 5A02H-AU243-TZJ49-GTC7K-3C61N

  4. CString的头文件

    CString的头文件:#include <atlstr.h>

  5. 原生JS 基础总结

    0. 好习惯 分号 ; 花括号 {}, var 弄清楚 null , undefined 区别 , isNaN, === 与 == 区别 1. prompt , confirm , alert 不同框 ...

  6. scala 资料集结

    Scala入门到精通 http://lib.csdn.net/base/scala/structure http://hongjiang.info/scala/ http://blog.csdn.ne ...

  7. Extending Markov to Hidden Markov

    Extending Markov to Hidden Markov a tutorial on hidden markov models, Hidden Markov Models, hidden m ...

  8. html5 canvas缩放变换

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. python 多进程的启动和代码执行顺序

    对照着廖雪峰的网站学习Python遇到些问题: 在进程中,父进程创建子进程时发现,显示不是按照顺序显示,疑问? 参照代码如下: from multiprocessing import Pool imp ...

  10. 【干货】Linux内存数据的获取与转存 直捣密码

    知识源:Unit 2: Linux/Unix Acquisition 2.1 Linux/Unix Acquistion Memory Acquisition 中的实验demo部分  小白注意,这是网 ...