实现一个函数StrSep(s,sub,part1,part2)来接收一个字符串和一个子字符串(sub)并返回:

时间:2017-02-19 17:34:21

标签: c++

part1:之前的部分但不包括(子)
part2:(s)成功的部分,但不包括(sub)

例如,如果s =“3rdofJuly”,sub =“of”,则part1 =“3rd”,part2 =“July”

如果(s)中不存在(sub),则part1,part2作为Null字符串返回。

这是我为我的代码提出的,我设法做了part1但我无法获得part2:

#include <iostream>
#include <string>
#include <ctype.h>
using namespace std;
void StrStep (string,string);

int main(int argc, const char * argv[])
{
    string S;
    string Sub = "of";

    cout << "enter a string : " <<endl;
    cin >> S;
    StrStep(S,Sub);
    return 0;
}


void StrStep (string &s, string &sub)
{
    string part1;
    string part2;
    if (s.find(sub) != string::npos )
        part1 = s.erase(s.find(sub),string::npos);
    if (s.find(sub) != string::npos)
        part2 = s.erase(

} 

1 个答案:

答案 0 :(得分:0)

std::string::find方法返回搜索字符串的起始位置。

要到达搜索字符串的末尾,您需要将子字符串的长度添加到该位置:

std::string::size_type position = s.find(sub) + sub.length();

您需要检查position是否仍在字符串中。有一个用例,其中 part2 可能为空。