cin.getline、getline和gets的区别

2023-05-16

cin.getline:

此函数一次读取多个字符(包括空白字符),直到读满N-1个,或者遇到指定的结束符为止(默认的是以'\n'结束)。其语法为:cin.getline(字符指针(char*),字符个数N(int),结束符(char));

#include<iostream>
using namespace std;
 
int main()
{
char a[10];
cin.getline(a,10);
for(int i=0;i<10;i++)
cout<<a[i]<<" ";
return 0;
}

输入:1234567890123

输出:1 2 3 4 5 6 7 8 9 _ (第10位存放字符串结束符'\0')

注意:cin.getline()函数缺省的第三个参数为'\n',如果把cin.getline(a,10)改为cin.getline(a,10,'#')

#include<iostream>
using namespace std;
int main()
{
char a[10];
cin.getline(a,10,'#');
cout<<a<<endl;
return 0;
}

输入:1234#567890

输出:1234

getline:

注意:与cin.getline功能类似,但是参数不一样,也属于两个不同的流,是两个不一样的函数。getline接受的字符串长度不受限制

#include<string>//getline包含在string头文件里
#include<iostream>
using namespace std;
int main()
{
    string str;
    getline(cin,str,'#');
    char c=getchar();
    cout<<str<<' '<<c<<endl;
    return 0;
}

输入为:aa#b

输出为:aa b

gets:

C中的函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出

与getline函数功能相似,但是不能自定义结束符,只能换行符结束

#include "stdio.h" //这个头文件包含gets()函数
int main(void)
{
    char str1[5];
    gets(str1);
    printf("%s\n", str1);
    return 0;
}

输入:ab c

输出:ab c


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

cin.getline、getline和gets的区别 的相关文章

  • Cin 在 while 循环中

    因此 我环顾四周 无法弄清楚在 While 循环期间 cin 发生了什么 我正在阅读 C Primer 第 5 版 一书 我注意到在其中一个练习中 我无法使用 cin 来获取字符串 除非它不终止 while 循环 我仅使用 getline
  • 为什么 std::getline 调用 std::cin 不等待用户输入? [复制]

    这个问题在这里已经有答案了 有什么充分的理由吗 std string input std getline std cin input getline 调用不会等待用户输入 cin的状态是不是有点混乱了 您很可能在读取其他数据后尝试读取字符串
  • GNU getline 接口是否有替代实现?

    我目前正在进行的实验使用的软件基础具有复杂的源历史记录并且没有明确定义的许可证 合理化事情并在固定许可证下发布将需要大量的工作 它还旨在运行一个随机的 unixish 平台 并且只有我们支持的一些 libc 具有 GNU getline 但
  • gets() 接受输入而不实际给它任何输入?

    我对 C 相当陌生 如果这是一个愚蠢的问题 我很抱歉 但是当我运行以下代码时 include
  • 为什么 while 里面的 cin 不停止获取用户输入?

    我现在开始学习 C 所以我想这将是一个非常简单的新手问题 那么 为什么 while 内的 cin gt gt x 行不会停止循环以获取用户输入 如果用户输入字符而不是数字 include
  • C++ cin 和 CTRL + Z 问题

    我正在阅读 C Primer 5th 我在练习中遇到了一些问题 从 cin 读取单词序列并将值存储为向量 后 你已经阅读了所有单词 处理向量并将每个单词更改为 大写 打印转换后的元素 一行八个字 我的代码是这样的 include
  • cin >> i 输入符号 + 时出错

    在 C 程序中 我尝试处理由散布有运算符 的整数操作数组成的用户输入 我可以要求用户在每个运算符之前和之后添加空格 我的方法是假设任何不是 int 的东西都是运算符 因此 一旦流上出现非 eof 错误 我就会调用 cin clear 并将下
  • 为什么 std::getline 不阻塞?

    我在 Objective C 类中 在 Objective C 文件中 有以下代码 NSString readString string res std getline cin res return NSString stringWithC
  • 在 C++ 中使用 getline() 进行文件输入

    我正在尝试用 C 完成一个简单的初学者任务 我有一个包含该行的文本文件 约翰 史密斯 31 就是这样 我想使用 ifstream 变量读取此数据 但我想将名称 John Smith 读入一个字符串变量 然后将数字 31 读入一个单独的 in
  • 为什么我的数组中的指针指向同一个字符串?

    我试图理解为什么会出现问题 我有一个文件 我从中读取了几行 char array slave 128 int i 0 while read getline line len fp 1 if strstr line X NULL array
  • cin.getline() 正在跳过 C++ 中的输入[重复]

    这个问题在这里已经有答案了 如果我使用以下代码 getline 不会采用最后一个输入 对于 for 循环的最后一次迭代 它只是跳过它 int main int n map
  • cin >> 对于较大的数字失败,但对于较小的数字有效?

    为什么cin失败 当我输入一个数字 如 3999999999 但它适用于较小的数字 如 5 include
  • 将逗号分隔的文本文件读入数组

    我正在尝试用 C 编写一个程序 模拟大学招生系统 学生输入他们的 ID 程序在文本文件中搜索他们的信息 并根据文本文件加载结构 我已经到了无法将他们注册的课程放入结构数组的地步 使用 getline 函数 使用 作为 delim 也将继续下
  • 如何使用 std::cin 读取 bool

    我是 C 新手 我想知道函数 cin 在布尔数据的情况下如何工作 比方说 bool a cin gt gt a 我知道如果我给出 0 或 1 我的数据 a 将是 true 或 false 但是如果我给出另一个整数甚至一个字符串会发生什么 我
  • 使用 sscanf 迭代

    我对 sscanf 函数了解不多 但我想做的是迭代一行整数 给定变量 char lineOfInts 我已将其作为注册用户输入的行 我能够很好地获得输入 但是当我尝试使用 sscanf 时 我想迭代每个 int 我知道如果我知道之前会有多少
  • 为什么 getline() 函数不起作用,除非我在函数 chamodifier 中调用它两次[重复]

    这个问题在这里已经有答案了 怎么了如果我在字符修饰符函数中仅使用一次 get line 函数 编译器将忽略它 除非我调用该函数两次 为什么我不能只使用一次 我尝试使用其他方法 它有效 但我想了解这个 我现在只是随机编写一些内容 这样添加更多
  • do while 循环不能有两个 cin 语句吗?

    我只是遵循一个关于 do while 循环的简单 C 教程 我似乎已经完全复制了教程中编写的内容 但我没有得到相同的结果 这是我的代码 int main int c 0 int i 0 int str do cout lt lt Enter
  • getline 跳过第一个输入字符 c++ [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 所以我制作
  • 如何使 std::cin 读取空格? [复制]

    这个问题在这里已经有答案了 我知道这个问题之前已经在这个网站上被问过 但我似乎无法掌握如何让它与我的特定程序一起工作 本质上 我正在创建一种小型 MadLibs 类型的游戏 玩家必须输入某些内容才能将其融入故事中 现在 如果用户输入中没有空
  • 如何从文本文件读取数据并将其推回向量?

    我有一个文本文件 test txt 它存储了我的数据 如下所示 每个分隔符字段之间有一个空格 代码 名称 Coy 045 Ted Coy1 054 Red Coy2 我如何从文件中读取这些数据并将其插入向量中 vector

随机推荐

  • Java入门必备知识

    一 HelloWord案例编写 在IDEA下 xff1a 右键新建类起一个类名 class就是一个类 public static void main String args System out println 34 HelloWorld
  • c#程序编写规范

    C 代码开发规范 文件状态 xff1a 草稿 正式 修改 文件标识 xff1a 当前版本 xff1a 1 1 作 者 xff1a Empty 联系电话 xff1a 最后更新 xff1a 2014 04 07 版本记录 日期 版本号 作者 说
  • 数据结构——存储结构和逻辑结构

    数据结构 存储结构和逻辑结构 1 存储结构 xff1a 数据对象在计算机中的存储表示称为数据的存储结构 xff0c 也称为物理结构 把数据对象存储到 计算机时 xff0c 通常要求既要存储各数据元素的数据 xff0c 又要存储数据元素之间的
  • C++获取网卡信息-注册表名称

    废话不多说 xff0c 直接上代码 xff1a include lt WinSock2 h gt include lt Iphlpapi h gt include lt iostream gt using namespace std pra
  • 全局初始化变量/全局未初始化变量/全局静态变量/局部变量的存储位置,作用域,与生命周期

    比如如下程序代码片段 span class hljs keyword int span a 61 span class hljs number 0 span span class hljs keyword char span p1 span
  • 建议收藏!PyCharm快捷键大全

    PyCharm 是Python中使用的有力工具 xff0c 它提供的功能非常强大 xff0c 正确使用里面的实用技巧 xff0c 能带来事半功倍的效果 本文给大家整理汇总一下Pycharm 的常用快捷键 xff0c 希望能帮助到小伙伴节约省
  • java调用http传json数据或字符串

    package com emm util import java io ByteArrayOutputStream import java io File import java io FileOutputStream import jav
  • 字符串通配(正则表达式)

    题目描述 对于字符串A xff0c 其中绝对不含有字符 和 再给定字符串B xff0c 其中可以含有 或 xff0c 字符不能是B的首字符 xff0c 并且任意两个 字符不相邻 exp中的 代表任何一个字符 xff0c B中的 表示 的前一
  • Scikit-Learn简介

    写给自己的备忘 1 简介 对 Python 语言 有所了解的科研人员可能都知道 SciPy 一个开源的基于 Python 的科学计算工具包 基于 SciPy xff0c 目前开发者们针对不同的应用领域已经发展出了为数众多的分支版本 xff0
  • 生产者消费者模式实现

    生产者消费者模式实现 synchronized wait和notify方式 一 基本流程 生产者在缓冲区未满时生产数据 xff0c 消费者在缓冲区有数据时从缓冲区中取数据 如果缓冲区已经满了 xff0c 则生产者线程阻塞 xff1b 如果缓
  • Linux SSH 登录其他机器

    ssh命令用于远程登录上Linux主机 常用格式 xff1a ssh l login name p port user 64 hostname 更详细的可以用ssh h查看 举例 不指定用户 xff1a ssh 192 168 0 11 指
  • Python中获取文件路径

    os path abspath os span class token punctuation span path span class token punctuation span abspath span class token pun
  • Matlab——矩阵打印显示

    Matlab 矩阵打印显示 我们这里定义一个矩阵 xff08 1 xff09 以列的形式将矩阵中量显示出来方式为A 2 取第i行到第j行的第k列数据为A i j k 3 取第i行到第j行的第m列到第n列的数据为A i j m n 4 已行的
  • 数据库报错 [ERR] 1118 - Row size too large (> 8126). Changing some columns to TEXT or BLOB or using ROW_F

    就是说 xff0c 远程的数据库量太大了 xff0c 我本地的数据库配置不对 xff0c 装不下了 xff08 1 xff09 从网上看的要改引擎 xff1a 从mysql的配置文件下 xff0c 找到my ini文件 xff0c 然后需要
  • “端到端”是什么意思

    1 传统机器学习VS深度学习 相对于深度学习 xff0c 传统机器学习的流程往往由多个独立的模块组成 xff0c 比如在一个典型的自然语言处理 xff08 Natural Language Processing xff09 问题中 xff0
  • TRON对接

    参考 官方API文档 https developers tron network referenceC 43 43 https github com aUscCoder TronWallet TRON资源模型 参考 https tronpr
  • 双精度浮点数double

    double类型介绍 双精度浮点数 xff08 double xff09 是计算机使用的一种数据类型 比起单精度浮点数 xff0c 双精度浮点数 double 使用 64 位 xff08 8字节 xff09 来存储一个浮点数 它可以表示十进
  • 解析SpringBoot启动类——起步依赖、自动配置

    分析SpringBoot的启动类 提出问题 xff1a 为什么通过启动类的 SpringApplication run方法就可以启动一个项目 xff1f span class token annotation punctuation 64
  • AQS实现原理分析

    AQS 什么是AQS AQS xff08 AbstractQueuedSynchronizer xff09 即抽象队列同步器 xff0c 是一套可以实现同步锁机制的框架 xff0c 是许多JUC内同步框架的基石 AQS通过一个FIFO的队列
  • cin.getline、getline和gets的区别

    cin getline 此函数一次读取多个字符 包括空白字符 xff09 xff0c 直到读满N 1个 xff0c 或者遇到指定的结束符为止 默认的是以 39 n 39 结束 其语法为 cin getline 字符指针 char 字符个数N