C++用getline分割空白字符的方法详解
C++用getline分割空白字符的方法详解
std::getline 函数常用于从输入流读取一行数据,默认以换行符作为分隔符。但它并不能直接用于按空白字符分割字符串。
如果需要使用空格、制表符、换行符等空白字符分割字符串,可以使用 std::istringstream 类结合循环读取单词的方式实现。
以下示例演示了如何使用 std::istringstream 和循环按空白字符分割字符串:cpp#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;}
代码解析:
- 创建字符串和istringstream对象: 首先定义一个字符串
sentence存储待分割的句子,然后创建一个std::istringstream对象iss,并将sentence传递给它。2. 循环读取单词: 使用while循环,每次循环从iss对象中读取一个单词,存储到字符串word中。3. 输出分割结果: 循环内部将读取到的每个单词word打印到标准输出。
工作原理:
iss >> word 表达式利用了输入流的特性,它会根据空白字符将字符串按单词进行分割。每次循环,iss 对象都会读取并丢弃一个空白字符,并将下一个单词存储到 word 中,直到读取到字符串结尾。
希望以上示例能够帮助你理解如何使用 std::istringstream 按空白字符分割字符串。如果你还有其他关于字符串分割、输入流或 C++ 的问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/cqDs 著作权归作者所有。请勿转载和采集!