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;
}