当前位置: 首页 > 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.lqws.cn/news/512479.html

相关文章:

  • MySQL之SQL性能优化策略
  • 《仿盒马》app开发技术分享-- 兑换列表展示(68)
  • git操作练习(3)
  • 【Python-Day 29】万物皆对象:详解 Python 类的定义、实例化与 `__init__` 方法
  • SQL Server从入门到项目实践(超值版)读书笔记 18
  • git commit --no-verify -m ““ 命令的作用是什么
  • LangChain网页自动化PlayWrightBrowserToolkit
  • Python训练营-Day40-训练和测试的规范写法
  • maven:迁移到 Maven Central 后 pom.xml的配置步骤
  • 马克思主义基本原理期末复习下
  • HarmonyOS开发基础 --鸿蒙仓颉语言基础语法入门
  • 基于元学习的回归预测模型如何设计?
  • 3D重建任务中的显式学习和隐式学习
  • 脉内频率捷变LFM信号
  • 【神经网络预测】基于LSTM、PSO - LSTM、随机森林和多项式拟合的火力机组排放预测
  • 解锁Selenium:Web自动化的常用操作秘籍
  • 超实用教程:n8n + MCP(MinIO Client Processor)构建智能文件处理流水线 - 从零部署到企业级自动化实战​
  • ubuntu20.04安装多版本python时,如何使用sudo python3.10
  • Linux离线搭建Jenkins
  • 有AI后,还用学编程吗?
  • 哈希表理论与算法总结
  • 飞往大厂梦之算法提升-day08
  • Java实现简易即时通讯系统
  • leetcode230-二叉搜索树中第K小的元素
  • OSS与NAS混合云存储架构:非结构化数据统一管理实战
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | MovieApp(电影卡片组件)
  • AI时代工具:AIGC导航——AI工具集合
  • 60天python训练营打卡day41
  • Oracle LogMiner日志分析工具介绍
  • 数据库AICD特性之--一致性 Consistency