当前位置: 首页 > news >正文

C++字符串的行输入

1、字符串的输入

        下面用一个真实的示例来进行演示:

#include<iostream>
#include<string>int main()
{using namespace std;const int ArSize = 20;char name[ArSize];char dessert[ArSize];cout << "Enter your name:\n";cin >> name;cout << "Enter your favorite dessert name:";cin >> dessert;cout << endl;cout << "I have some delicions " << dessert << " for you ," << name <<"\n";return 0;}

这里的输出结果是:

Enter your name:
Alistair Dreeb
Enter your favorite dessert name:
I have some delicions Dreeb for you ,Alistair

聪明的小伙伴肯定发现了,这里我们并没有输入dessert,而最后一句直接输出了dessert,这就是cin在处理字符串的缺陷。因为cin手动输入时,我们不能输入空字符,那么cin就要用其他的方式来判断结尾,所以cin就是用空白(空格,制表符和换行符)来判断的。在第一个输入时Alistair作为第一个字符串被放进了输入流中,而Dreeb被当做第二个字符串放入输入流中,因此编译器是将Dreeb当做了dessert的值,所以直接跳过了dessert的输入。这就是其中的原理。

2、每次读取一行字符输入

       在我们生活中,不可能每次都只是输入一个单词,比如我们想输入一个城市名New York或者是San Paulo,这些单词中间都有空格,那我们应该怎样输入这些字符串呢?这里要用到两个相关的函数,分别是getline()函数和get()函数,两个函数都是用来读取一行字符输入的,但是用法却不相同,我们先来讲getline()函数。首先,getline()函数是来自于istream文件中的一个类函数,通过cin对象进行使用,它有两个参数一个是char数组的名称,另一个则是将要输入字符串的大小,例如:cin.getline(name,19),这样可以读取整行的字符串输入(注意输入字符串的字符数不能超过参数所给定的数量),当编译器遇到换行符时,会自动停止读取。另一个函数get()函数与getline()函数的使用方法相同,参数也是相同的,但是唯一不同的是,get()函数会保留换行符,例如:

cin.get(name1,19);

cin.get(name2,19);

此时,编译器只能读取到第一个函数的字符串,而第二个函数只能读取到换行符 ,导致name2为空白,那么我们应该如何来消除这个缺陷呢,刚好这里有个get()函数变体,它不需要参数,可以读取换行符,从而消除缺陷,即:

cin.get(name1,19);

cin.get();

cin.get(name2,19);

这样就可以读取第二个字符串常量了。这里还有一个变式,就是cin.get(name1,19).get(),这样与getline()函数的作用相同。

http://www.lryc.cn/news/574454.html

相关文章:

  • 查询sqlserver数据库中,数据占的空间和索引占的空间
  • 鸿蒙HarmonyOS 5 开发实践:LazyForEach在通讯录应用中的高效渲染(附:代码)
  • 前端vue2每三十秒被动接受后端服务器发送过来得数据
  • 前端react使用 UmiJS 构建框架 在每次打包时候记录打包时间并在指定页面显示
  • Linux 启动过程流程图
  • PDF全能转换工具,支持图片转PDF,多图合并转PDF,word转PDF,PDF转WORD,PDF转图片
  • TouchDIVER Pro触觉手套:虚拟现实中的多模态交互新选择
  • Flask(五) 表单处理 request.form
  • 鸿蒙开发深入解析:Data Ability 数据共享机制全面指南
  • Java并发编程中高效缓存设计的哲学
  • 【格与代数系统】示例2
  • PyTorch 实现的 GlobalPMFSBlock_AP_Separate:嵌套注意力机制在多尺度特征聚合中的应用
  • 关于 pdd:anti_content参数分析与逆向
  • C#图书管理系统笔记(残缺版)
  • 【数据标注师】词性标注2
  • 【AI News | 20250623】每日AI进展
  • 基于 SpringBoot+JSP 的医疗预约与诊断系统设计与实现
  • 华为OD机试_2025 B卷_矩形相交的面积(Python,100分)(附详细解题思路)
  • leetcode82.删除排序链表中的重复元素II
  • EEG 分类攻略1- theta, alpha, beta和gamma频谱
  • C++语言发展历程-2025
  • python中学物理实验模拟:平抛运动和抛物运动
  • Python csv 模块
  • 数组题解——​轮转数组【LeetCode】
  • 华为云 Flexus+DeepSeek 征文|文案魔盒・Emoji 菌:基于华为云 CCE 集群 Dify 大模型,创意文案智能生成助手
  • 数组题解——​最大子数组和​【LeetCode】(更新版)
  • 黑马程序员苍穹外卖DAY1
  • 【软考高级系统架构论文】论数据分片技术及其应用
  • C指针总结复习(结合deepseek)
  • 深入浅出Node.js后端开发