【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;
}
相关文章
|
16天前
|
安全 C语言 C++
C++学习笔记
C++学习笔记
|
22天前
|
编译器 C++ 容器
【C++】String常见函数用法
【C++】String常见函数用法
14 1
|
24天前
|
存储 NoSQL 索引
MPP架构数据仓库使用问题之在ORC文件中,String类型字段是怎么进行编码的
MPP架构数据仓库使用问题之在ORC文件中,String类型字段是怎么进行编码的
|
26天前
|
开发工具 数据安全/隐私保护
【Azure Developer】使用MSAL4J 与 ADAL4J 的SDK时候,遇见了类型冲突问题 "java.util.Collections$SingletonList cannot be cast to java.lang.String"
【Azure Developer】使用MSAL4J 与 ADAL4J 的SDK时候,遇见了类型冲突问题 "java.util.Collections$SingletonList cannot be cast to java.lang.String"
|
29天前
|
编译器 C++
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
【C/C++学习笔记】C++声明与定义以及头文件与源文件的用途
28 0
|
1月前
|
C++ 容器
C++中自定义结构体或类作为关联容器的键
C++中自定义结构体或类作为关联容器的键
32 0
|
1天前
|
编译器 C++
C++ 类构造函数初始化列表
构造函数初始化列表以一个冒号开始,接着是以逗号分隔的数据成员列表,每个数据成员后面跟一个放在括号中的初始化式。
41 30
|
15天前
|
存储 编译器 C++
C ++初阶:类和对象(中)
C ++初阶:类和对象(中)
|
1月前
|
存储 安全 编译器
【C++】类和对象(下)
【C++】类和对象(下)
【C++】类和对象(下)
|
15天前
|
C++
C++(十六)类之间转化
在C++中,类之间的转换可以通过转换构造函数和操作符函数实现。转换构造函数是一种单参数构造函数,用于将其他类型转换为本类类型。为了防止不必要的隐式转换,可以使用`explicit`关键字来禁止这种自动转换。此外,还可以通过定义`operator`函数来进行类型转换,该函数无参数且无返回值。下面展示了如何使用这两种方式实现自定义类型的相互转换,并通过示例代码说明了`explicit`关键字的作用。