苏打329 2022-07-19 09:51 采纳率: 50%
浏览 38
已结题

不能用全局变量和字符串的话,用c++咋写啊

输入一个句子,如果句子超过30个字,删掉标点符号,跳过一两个字符的单词,删掉句子里面的the 和 and 。

例如

输入: the a apple pan with sugar and vanilla

输出: apple pan with sugar vanilla

可以用cstrings

我尝试了用strlen 但是显示找不到我输入值

  • 写回答

2条回答 默认 最新

  • Hann Yang 优质创作者: 编程框架技术领域 2022-07-19 13:43
    关注
    #include<iostream>
    #include<cstring>
    #include<vector>
    using namespace std;
    
    vector<string> split(string str, string pattern)
    {
        string::size_type pos;
        vector<string> result;
        str += pattern; //扩展字符串以方便操作
        int size = str.size();
        for (int i = 0; i < size; i++)
        {
            pos = str.find(pattern, i);
            if (pos < size)
            {
                string s = str.substr(i, pos - i);
                result.push_back(s);
                i = pos + pattern.size() - 1;
            }
        }
        return result;
    }
    
    int main()
    {
        string s;
        getline(cin, s);
    	vector<string> result=split(s," ");
    	for(int i=0; i<result.size(); i++){
    		if (result[i].size()>2 && result[i]!="the" && result[i]!="and")
    		   	cout<<result[i]<<" ";
    	}
        return 0;
    }
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月13日
  • 已采纳回答 8月5日
  • 创建了问题 7月19日