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(
}
答案 0 :(得分:0)
std::string::find
方法返回搜索字符串的起始位置。
要到达搜索字符串的末尾,您需要将子字符串的长度添加到该位置:
std::string::size_type position = s.find(sub) + sub.length();
您需要检查position
是否仍在字符串中。有一个用例,其中 part2 可能为空。