前言
算法上机课布置了这么个题
输入一段英文句子,要求提取其中所有单词,提取后的单词不能有空格和标点符号
思路
首先想到直接遍历整个字符串,遇到空格和标点就把单词输出,但是写起来比较麻烦,而且不能实现单词的存储(虽然题目没有要求存储)。在网上搜索其他大佬的代码时发现了这个东西,这是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
领取专属 10元无门槛券
私享最新 技术干货