如何用一个新单词替换未知数量的相同字符?

时间:2019-04-03 23:38:27

标签: c++

我想做的是如果我有一个像 std::string test = "2xs***gcv"是否可以用新词ex 2xs***gcv = 2xsWORDgcv替换恒星的所有实例,问题是*的数量并不总是3 5,7,2等,但它们总是彼此相邻。

我到目前为止有什么

std::string test = "2xs***gcv"
char *pos;
pos = strchr(result.c_str(),'*');
    while(pos!=NULL) {
        printf ("found at %d\n",pos-result.c_str()+1);
        pos=strchr(pos+1,'*');
}

告诉我*的位置,问题是我似乎无法弄清楚如何仅将*的第一个实例与最后一个实例隔离。

1 个答案:

答案 0 :(得分:2)

std::string同时具有findrfind,因此,如果您知道字符串仅包含一组连续的星号,则可以找到它们的开头和结尾,如下所示:

auto left = test.find('*');
auto right = test.rfind('*');

然后,您可以使用以下新数据替换该范围:

test.replace(left, right-left+1, "WORD");

与往常一样,为了简化/清晰起见,我省略了任何错误检查(等等)。