首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

字符串分割—istringstream(C+)

前言

算法上机课布置了这么个题

输入一段英文句子,要求提取其中所有单词,提取后的单词不能有空格和标点符号

思路

首先想到直接遍历整个字符串,遇到空格和标点就把单词输出,但是写起来比较麻烦,而且不能实现单词的存储(虽然题目没有要求存储)。在网上搜索其他大佬的代码时发现了这个东西,这是C++的一个输入输出控制类,作用是将字符串按照空格分割,写起来非常的简洁,例如就是创建了一个cut对象,里面存的是string按照空格分割好的内容。剩下的就很简单了,题目要求标点也作为分隔符,那就先遍历一遍把出现的标点全部换成空格然后用istringstream分割即可,如果要存储分割后的每个单词就用一个字符串数组,也可以顺便实现增删改查(非必须) 值得注意的是,要用istringstream需要包含头文件

代码

#include

#include

#include

using namespace std;

int main()

{

string str;

string words[10005];

cout

getline(cin, str);

//将标点替换为空格

for (int i = 0; i < str.size(); i++)

{

if (str[i] == ',' || str[i] == '.' || str[i] == '!' || str[i] == '?')

{

str[i] = ' ';

}

}

//istringstreama分割字符串

istringstream cut(str);

int index = 0;

cout

//用string数组来存储每一个单词

while (cut >> words[index])

{

cout

}

cout

cout

system("pause");

return 0;

}

运行效果

摘自https://cloud.tencent.com/developer/article/2141803

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230405A06MSB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券