string s;
getline(cin,s);
cout<<s<<endl; char s[];
scanf("%[^\n]%*c",s);
printf("%s\n",s); char s[];
gets(s);
printf("%s\n",s); char s[];
cin.get(s,);
printf("%s\n",s) char s[];
cin.getline(s,);
printf("%s\n",s);

下面介绍cin.get()和cin.getline()的区别:

可分为三种情况来看:
1)输入的字符串不超过限定大小
get(str,Size):读取所有字符,遇到'\n'时止,并且将'\n'留在输入缓冲区中,其将被下一个读取输入的操作捕获,影响该输入处理;
getline(str,Size):读取所有字符,遇到'\n'时止,并且将'\n'直接从输入缓冲区中删除掉,不会影响下面的输入处理。
2)输入的字符数超出限定的大小
        get(str,Size):读取Size-1个字符,并将str[Size-1]置为'\0',然后将剩余字符(包括'\n')留在输入缓冲区中,这些字符将被下一个读取输入的操作捕获,影响该输入处理;
        getline(str,Size):读取Size-1个字符,并将str[Size-1]置为'\0',剩余字符(包括'\n')留在输入缓冲区中,随即设置cin实效位(即if(!cin)的判断为真),关闭输入。其后的所有输入都无法得到任何东西,当然也无法得到输入缓冲区中剩余的字符串。但如果象本例一样用clear()重置cin,其后的输入便可用并会得到遗留在输入缓冲区中的字符。
3)输入一个空行(即直接回车)
        get(str,Size):str将得到'\0',并设置cin实效位,关闭输入,但回车依然留在输入缓冲区中,因此如果我们用clear()重置cin,其下一个读取输入的操作将捕获'\n';
        getline(str,Size):str将得到'\0',并将'\n'删除掉,不置实效位,不关闭输入。所以对于cin.getline来说空行是合法的输入,且不会影响下面的输入处理。
        至于使用那个更好,可能因人习惯不同而不同,仁者见仁智者见智。对于我们编程来说,总希望能有更好的容错性,即便用户输入了不合理的输入,程序也应该能够 提示并能够重新输入或继续正常处理,而因为用户的输入问题而导致程序错误或其后的所有输入都不可用显然不是我们希望的。使用get(str,Size)和 getline(str,Size),都可能碰到设置失效位,关闭输入的情况,故都是需要考虑到相应的防错处理的。

参考资料:https://blog.csdn.net/yo_bc/article/details/72617275

C++读入整行字符串的方法的更多相关文章

  1. c程序设计语言_习题1-16_自己编写getline()函数,接收整行字符串,并完整输出

    Revise the main routine of the longest-line program so it will correctly print the length of arbitra ...

  2. c++ string类使用及用string类解决整行字符串输入

    下面随笔给出c++ string类使用及用string类解决整行字符串输入. string类 使用字符串类string表示字符串 string实际上是对字符数组操作的封装 string类常用的构造函数 ...

  3. javascript创建多行字符串的方法(转)

    JS里并没有标准的多行字符串的表示方法,但是在用模板的时候,为了保证模板的可阅读性,我们又不可避免的使用多行字符串,所以出现了各种搞法,这里以一段jade的模板作为示例,简单总结和对比一下. 一.字符 ...

  4. C/C++如何整行读入字符串?

    在写代码的过程中,经常要一行一行的读入字符串进行处理,这里我总结了一些方法,供大家参考. 方法一:scanf()读入char[] 使用方法: ]; scanf("%[^\n]",& ...

  5. CSS 如何实现当鼠标放在上面时整行变色呢?

    摘要:下文讲述css中实现鼠标放在指定行上面时,整行变色的方法分享,如下所示: 实现思路:使用:hover伪类,实现当鼠标指向时,其背景色发生相应的变化,如下例所示: 例: 下文中的div,当鼠标放上 ...

  6. c++string标准输入和getline()整行读入

    1.使用标准IO操作读写string对象 我们都知道,使用标准iostream操作来读写int ,double等内置类型的值,同样,我们也可以使用IO操作来读写string对象. c++ code: ...

  7. PHP中的多行字符串传递给JavaScript方法两则

    PHP和JavaScript都是初学.近期有这么个需求: 例如说有一个PHP的多行字符串: $a = <<<EOF thy38 csdn blog EOF; 传递给JavaScrip ...

  8. stringstream读入每行数据

    做了下阿里的编程测试题,就30分钟,不是正常的输入输入,直接给一个数组作为输入. 于是带想题和处理数据花了20分钟,最后10分钟搞一个dij模版, 竟然只过了66%,应该是我数组开小了. 题目数据量没 ...

  9. js中多行字符串拼接

    前言 我们会经常遇到这样的场景,需要拼接多行字符串,在字符串中动态插入一些数据以达到业务的需求.但是js中并没有标准的多行编辑的函数,于是聪明的程序员们便脑洞大开,书写出许多有趣的方法. 1 2 3 ...

随机推荐

  1. 13-THREE.JS 点光源

    <!DOCTYPE html> <html> <head> <title>Example 03.02 - point Light</title&g ...

  2. java学习笔记 --- 多线程(线程安全问题——同步代码块)

    1.导致出现安全问题的原因: A:是否是多线程环境 B:是否有共享数据 C:是否有多条语句操作共享数据 2.解决线程安全问题方法: 同步代码块: synchronized(对象){ 需要同步的代码; ...

  3. Codeforces Round #276 (Div. 2)A. Factory(数论)

    这道题可以暴力的一直按要求的方法去做,做1000000次还不能整除m就认为永远不能整除m了(m不超过100000,循环1000000次比较安全了已经).这种方法可以AC. 下面深入的分析一下到底循环多 ...

  4. java 网页 保存上传文件

    网页请求提交到另外一个jsp 进行处理 index.jsp <%@ page language="java" import="java.util.*" p ...

  5. [BZOJ1242]Fishing Net

    dbzoj vjudge1 vjudge2 sol 给一个无向图,求判定是不是弦图. sol 还是弦图那套理论. 复杂度是\(O(n^2)\)的,因为\(m\)本质上和\(n^2\)是同级的. cod ...

  6. MongoDb学习网站

    http://www.runoob.com/mongodb/mongodb-window-install.html

  7. U盘操作

    一.8G的U盘被设置为2G,如何恢复 1.下载usboot 1.7 打开以后,选中U盘,点击[点击此处选择工作模式],选择[用0重置参数] ,然后点[开始].2.完成后它会提示拔下U盘,此时拔下U盘, ...

  8. Java基础--阻塞队列ArrayBlockingQueue

    ArrayBlockingQueue是阻塞队列的一种,基于数组实现,长度固定,队尾添加,队首获取, 构造函数: ArrayBlockingQueue(int capacity) ArrayBlocki ...

  9. bootstrap简单的签收页面

    http://aqvatarius.com/themes/atlant/html/ui-icons.html <%@ Page Language="C#" AutoEvent ...

  10. 机器学习:线性回归法(Linear Regression)

    # 注:使用线性回归算法的前提是,假设数据存在线性关系,如果最后求得的准确度R < 0,则说明很可能数据间不存在任何线性关系(也可能是算法中间出现错误),此时就要检查算法或者考虑使用其它算法: ...