我想做的是如果我有一个像
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,'*');
}
告诉我*的位置,问题是我似乎无法弄清楚如何仅将*的第一个实例与最后一个实例隔离。
答案 0 :(得分:2)
std::string
同时具有find
和rfind
,因此,如果您知道字符串仅包含一组连续的星号,则可以找到它们的开头和结尾,如下所示:
auto left = test.find('*');
auto right = test.rfind('*');
然后,您可以使用以下新数据替换该范围:
test.replace(left, right-left+1, "WORD");
与往常一样,为了简化/清晰起见,我省略了任何错误检查(等等)。