【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符

简介: 【C/C++学习笔记】string 类型的输入操作符和 getline 函数分别如何处理空白字符

string 类型的输入操作符和 getline 函数分别如何处理空白字符

一、输入操作符 >>

  • 当使用 >> 操作符从标准输入流 std::cin 读取到 std::string 类型的变量时,它会读取字符直到遇到任何空白字符。空白字符包括空格、制表符、换行符等。
  • 一旦遇到空白字符,>> 操作符就会停止读取,并丢弃这个空白字符(不会将其存储在字符串中)。
  • 这意味着,如果连续输入多个空白字符,>> 操作符只会读取到第一个空白字符之前的内容,并将其余的空白字符忽略。

二、getline 函数

  • getline 函数用于从输入流中读取一行文本,直到遇到换行符 \n。
  • 与 >> 操作符不同,getline 函数会读取包括空白字符在内的所有字符,直到遇到换行符。
  • 当 getline 遇到换行符时,它会将换行符丢掉。

三、测试代码

#include <iostream>
#include <string>

int main() {
    std::string word;
    std::cout << "Enter a word (use space to end): ";
    std::cin >> word; // 读取单词直到遇到空白字符
    std::cout << "You entered: " << word << std::endl;

    std::getline(std::cin, word); // 读取换行符

    std::string line;
    std::cout << "Enter a line (end with Enter): ";
    std::getline(std::cin, line); // 读取一行,包括空白字符
    std::cout << "You entered: " << line << std::endl;

    return 0;
}
相关文章
|
5月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
5月前
|
数据可视化 Java
让星星月亮告诉你,通过反射创建类的实例对象,并通过Unsafe theUnsafe来修改实例对象的私有的String类型的成员属性的值
本文介绍了如何使用 Unsafe 类通过反射机制修改对象的私有属性值。主要包括: 1. 获取 Unsafe 的 theUnsafe 属性:通过反射获取 Unsafe类的私有静态属性theUnsafe,并放开其访问权限,以便后续操作 2. 利用反射创建 User 类的实例对象:通过反射创建User类的实例对象,并定义预期值 3. 利用反射获取实例对象的name属性并修改:通过反射获取 User类实例对象的私有属性name,使用 Unsafe`的compareAndSwapObject方法直接在内存地址上修改属性值 核心代码展示了详细的步骤和逻辑,确保了对私有属性的修改不受 JVM 访问权限的限制
91 4
|
5月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
175 6
|
5月前
|
存储 分布式计算 NoSQL
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
大数据-40 Redis 类型集合 string list set sorted hash 指令列表 执行结果 附截图
50 3
|
5月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
66 0
|
5月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
97 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
13天前
|
编译器 C++ 开发者
【C++篇】深度解析类与对象(下)
在上一篇博客中,我们学习了C++的基础类与对象概念,包括类的定义、对象的使用和构造函数的作用。在这一篇,我们将深入探讨C++类的一些重要特性,如构造函数的高级用法、类型转换、static成员、友元、内部类、匿名对象,以及对象拷贝优化等。这些内容可以帮助你更好地理解和应用面向对象编程的核心理念,提升代码的健壮性、灵活性和可维护性。
|
15天前
|
编译器 C语言 C++
类和对象的简述(c++篇)
类和对象的简述(c++篇)
|
13天前
|
安全 编译器 C语言
【C++篇】深度解析类与对象(中)
在上一篇博客中,我们学习了C++类与对象的基础内容。这一次,我们将深入探讨C++类的关键特性,包括构造函数、析构函数、拷贝构造函数、赋值运算符重载、以及取地址运算符的重载。这些内容是理解面向对象编程的关键,也帮助我们更好地掌握C++内存管理的细节和编码的高级技巧。
|
13天前
|
存储 程序员 C语言
【C++篇】深度解析类与对象(上)
在C++中,类和对象是面向对象编程的基础组成部分。通过类,程序员可以对现实世界的实体进行模拟和抽象。类的基本概念包括成员变量、成员函数、访问控制等。本篇博客将介绍C++类与对象的基础知识,为后续学习打下良好的基础。