如何删除字符串中所有可能的子字符串中带有空格的子字符串?

时间:2019-04-12 15:16:05

标签: c++

问题是找到给定字符串中所有可能的子字符串。

我知道这个问题与此类似。

Generate all unique substrings for given string

但是我自己尝试。我已经生成了所有可能的组合,但是问题是我想消除其中包含空格的一些字符串。

int main()
{
    int t;
    cin>>t;
    while(t>0){
        long long int n;
        cin>>n;
        string S;
        cin>>S;
        for(int i=1; i<=S.size(); i++) {
            for(int j=0; j<=S.size()-1; j++) {

                cout<<S.substr(j,i)<<endl;
            }
        }

        t--;
    }
    return 0;
}

输入:

1
3
abb 

实际输出:

a
b
b
ab
bb
b
abb
bb
b

预期输出:

a
b
b
ab
bb
abb

如您所见,我想在其中删除一些带有空格的术语,例如“实际输出”中的第6、8和9个术语。

1 个答案:

答案 0 :(得分:0)

摘自std::string::substr

的文档

子字符串是对象的一部分,从字符位置pos开始,跨度为一个字符(或直到字符串结尾,以先到者为准)。

您误以为std::string::substr的第二个参数是结束位置,但实际上它是第一个参数的偏移量。