C++中cin >> str 和 string类的getline(cin, str) 用来读取用户输入的两种不同方式的不同点

这篇具有很好参考价值的文章主要介绍了C++中cin >> str 和 string类的getline(cin, str) 用来读取用户输入的两种不同方式的不同点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

C++中<iostream> 的cin >> str 和<string>的getline(cin, str) 用来读取用户输入的两种不同方式的不同点

<string>的getline()函数语法如下【https://cplusplus.com/reference/string/string/getline/】:

istream& getline (istream&  is, string& str, char delim);

其中,is是输入流对象;str是目标字符串对象;delim是可选参数,表示定界符(分隔符,默认为换行符'\n')。

使用getline()函数时,它会从输入流中读取一行文本,并将读取到的内容存储到目标字符串str中,直到遇到定界符(或文件结尾)为止。如果指定了定界符delim,则getline()函数会在遇到该字符时停止读取,否则默认为换行符。

例子

#include <iostream>
#include <string>
using namespace std;

int main() {
  
    string str;
    cout << "请输入名字:";
    getline(cin, str);  //cin >> str;
    
     // 检查字符串是否为空
    if (str.empty()) {
        cout << "The string is empty." << endl;
    } else {
        cout << "The string is not empty." << endl;
    }
    
    return 0;
}

运行效果:

C++中cin >> str 和 string类的getline(cin, str) 用来读取用户输入的两种不同方式的不同点,C、C++学习,c++

 特别说明:C++中<iostream> 的cin >> str 和<string>中getline(cin, str) 用来读取用户输入的两种不同方式的不同点:
☆ 数据类型不同:cin >> str是用来读取字符串类型的单个单词或数字型数据(整数、实数等),而getline(cin, str)则是用来读取整行的字符串。
☆ 分隔符:使用cin >> str时,输入被空白字符(如空格、制表符、换行符)分隔为不同的字符串,并将第一个非空白字符开始的连续字符序列存储到str中,剩余部分将会留在输入队列中;而getline(cin, str)则会读取整行输入,包括空白字符,在遇到换行符之前将其存储到str中。
☆ 输入限制:cin >> str只能读取到空白字符之前的内容,因此无法读取含有空格的字符串,一次只能读取一个单词或数字。而getline(cin, str)可以读取包含空格的完整行,因此可以读取多个单词或整行文本。
☆ 换行符处理:cin >> str读取后会将换行符留在输入流中,可以影响下一次读取操作。相比之下,getline(cin, str)会将换行符从输入流中移除,以防止影响后续读取操作。
空白字符是指在文本中没有可见形式的字符,主要包括空格、制表符和换行符。它们在文本处理中具有不同的作用。
空格(Space):表示一个可见的空间,在文本中起到分隔单词或字符的作用。多个连续的空格会被视为一个空格。
制表符(Tab):通常用\t来表示,在文本中占据一个固定的宽度,经常用于对齐文本中的内容。
换行符(Newline):表示换行的特殊字符,在不同的操作系统中可能有不同的表示方式。在Unix和Linux系统中,换行符用\n表示;在Windows系统中,换行符由两个字符组成,即回车符(Carriage Return)和换行符,用\r\n表示。
这些空白字符在输入和输出操作中都需要注意处理。在C++中,空白字符通常用于分隔不同的数据项,而换行符用于标识一行的结束。了解和正确处理这些字符对于正确解析和处理用户输入以及生成正确格式的输出非常重要。】

需要注意的是,在C++中,有两种getline函数。第一种定义在头文件<istream>中https://cplusplus.com/reference/istream/istream/getline/ ;第二种定义在头文件<string>中https://cplusplus.com/reference/string/string/getline/ 。
<istream>中的getline()函数用于从输入流中读取一行文本,而<string>中的getline()函数用于从一个字符串中读取一行文本。

前面介绍的是<string>中的getline()函数。

下面介绍<istream>中的getline()函数:getline()函数是istream类的一个成员函数,可以从输入流(如cin)读取一行文本并存储到一个std::string对象中。它的函数原型为:

istream& getline (char* s, streamsize n, char delim );

参数说明:

s:表示指向字符数组的指针,其中提取的字符存储为 c 字符串。

n:指定了字符数组s的最大长度。

delim:可选参数,表示行的分隔符,如果不指定,默认为换行符('\n')。

<istream>中的getline()函数用于读取一行文本,存储到字符数组中。

例如:

#include <iostream>   
using namespace std;
 
int main()
{
	char name[256];
	cout << "Please input your name: ";
	cin.getline(name, 256); // 从标准输入读取一行文本
	cout << "The result is:  " << name << endl;
  
    return 0; 
}

运行之:

C++中cin >> str 和 string类的getline(cin, str) 用来读取用户输入的两种不同方式的不同点,C、C++学习,c++

附录
C++中两种getline函数用法还可参见 https://www.jb51.net/article/180289.htm文章来源地址https://www.toymoban.com/news/detail-666051.html

到了这里,关于C++中cin >> str 和 string类的getline(cin, str) 用来读取用户输入的两种不同方式的不同点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【c++】string类的使用

    【c++】string类的使用

    目录 一、标准库中的string类 1、简单介绍string类 2、string类的常用接口注意事项 2.1、string类对象的常用构造 2.2、string类对象的容量操作 2.3、string类对象的访问及遍历操作 2.4、string类对象的修改操作 二、string类的模拟实现         (1)string是表示字符串的字符串类;    

    2024年02月01日
    浏览(12)
  • 【C++】string类的深入介绍

    【C++】string类的深入介绍

    作者:爱写代码的刚子 时间:2023.5.26 本篇博客主要深入介绍string类、string类的常用接口及操作,string中迭代器的使用,以及string中的部分方法。(由于篇幅有限,剩余方法以及string的深浅拷贝将在之后的博客介绍) 前言:C语言中,字符串是以’\\0’结尾的一些字符的集合,

    2024年02月08日
    浏览(14)
  • 【C++】string类的模拟实现

    【C++】string类的模拟实现

    前言:在上一篇中我们讲到了string类的使用方法,今天我们将进一步的去学习string类,去底层看看它顺带模拟实现部分的内容。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质量C++学习 👈 💯代码仓库:卫卫周大胖的学习日记💫 💪关注博主和博主一起学习!一起努

    2024年03月21日
    浏览(12)
  • 【C++】String类的模拟实现。

    🎉博客主页:小智_x0___0x_ 🎉欢迎关注:👍点赞🙌收藏✍️留言 🎉系列专栏:C++初阶 🎉代码仓库:小智的代码仓库 string类中需要三个成员变量分别记录元素个数、容量和内容。还需要一个 size_t 类型npos-1表示整型的最大值。 这段代码是 string 类的构造函数。构造函数是在

    2024年02月13日
    浏览(11)
  • 【C++】string类的基础操作

    【C++】string类的基础操作

    💗个人主页💗 ⭐个人专栏——C++学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读 1. 基本概述 2. string类对象的常见构造 3. string类对象的容量操作 4. string类对象的访问及遍历操作 5. 迭代器 6. string类对象的修改操作 6.1 基本修改操作 6.2 c_str()函数 6.3 find + npos、rfind和

    2024年03月11日
    浏览(14)
  • C++ String类的基本使用

    C++ String类的基本使用

            放弃时间的人,时间也会放弃他。——莎士比亚 ; 本篇章是关于string类内一些函数的介绍以及使用方法,都是我们编程必须掌握的基础! ​ 全文共7000字左右. 话不多说安全带系好,发车啦 (建议电脑观看) 。 附:红色,部分为重点部分;蓝颜色为需要记忆的

    2024年02月09日
    浏览(14)
  • /*设计一个函数void delChar(char *str, char c),删除字符串str中所有的字符c。在主函数中让用户输入一个字符串str 和一个字符c,然后调用函数delChar(

    /* 设计一个函数void delChar(char *str, char c), 删除字符串str中所有的字符c。 在主函数中让用户输入一个字符串str 和一个字符c, 然后调用函数delChar(str, c) ,最后输出删除后的字符串。 (要求:输入输出只能在main函数完成) */  

    2024年02月03日
    浏览(45)
  • C++中string类的常用函数

    C++中string类的常用函数

    引言:在C语言中对于字符串的一些操作,例如在字符串末尾增加字符,对字符串拷贝等,我们可以通过调用库中函数来完成这些操作,在C++中,我们把这些常规操作封装成了string类,可以通过类对象直接调用这些函数,使得更加符合了面向对象的思想。 作用:返回字符串的有效字符长度

    2024年02月08日
    浏览(14)
  • C++ 之 string类的模拟实现

    C++ 之 string类的模拟实现

    这学习我有三不学 昨天不学,因为昨天是个过去 明天不学,因为明天还是个未知数 今天不学,因为我们要活在当下,我就是玩嘿嘿~ –❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–❀-正文开始-❀–❀–❀–❀–❀–❀–❀–❀–❀–❀–

    2024年04月27日
    浏览(9)
  • 【C++】string类的深浅拷贝问题

    【C++】string类的深浅拷贝问题

    我们知道,定义一个类的时候,如果我们没有写构造,拷贝构造,赋值运算符重载,析构方法的话,编译器会自动生成。当该类成员中涉及到资源的管理时,实现的就是浅拷贝。所以,以上这几种方式是必须要程序猿手动实现的。 举例来看: 图中所示:实现了构造和析构,

    2023年04月26日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包