C++用getline分割空白字符的方法详解

std::getline 函数常用于从输入流读取一行数据,默认以换行符作为分隔符。但它并不能直接用于按空白字符分割字符串。

如果需要使用空格、制表符、换行符等空白字符分割字符串,可以使用 std::istringstream 类结合循环读取单词的方式实现。

以下示例演示了如何使用 std::istringstream 和循环按空白字符分割字符串:cpp#include #include #include

int main() { std::string sentence = 'Hello, how are you today?'; std::istringstream iss(sentence); std::string word;

while (iss >> word) {        std::cout << word << std::endl;    }

return 0;}

代码解析:

  1. 创建字符串和istringstream对象: 首先定义一个字符串 sentence 存储待分割的句子,然后创建一个 std::istringstream 对象 iss,并将 sentence 传递给它。2. 循环读取单词: 使用 while 循环,每次循环从 iss 对象中读取一个单词,存储到字符串 word 中。3. 输出分割结果: 循环内部将读取到的每个单词 word 打印到标准输出。

工作原理:

iss >> word 表达式利用了输入流的特性,它会根据空白字符将字符串按单词进行分割。每次循环,iss 对象都会读取并丢弃一个空白字符,并将下一个单词存储到 word 中,直到读取到字符串结尾。

希望以上示例能够帮助你理解如何使用 std::istringstream 按空白字符分割字符串。如果你还有其他关于字符串分割、输入流或 C++ 的问题,请随时提问。

C++用getline分割空白字符的方法详解

原文地址: https://www.cveoy.top/t/topic/cqDs 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录