我需要搜索一个字符串并编辑它的格式。
到目前为止,我可以替换字符串的第一次出现,但我无法用该字符串的下一次出现来替换。
这就是我的工作,有点:
if(chartDataString.find("*A") == string::npos){ return;}
else{chartDataString.replace(chartDataString.find("*A"), 3,"[A]\n");}
如果它没有找到字符串,则根本不会打印任何内容,所以这不好。
我知道我需要遍历整个字符串 chartDataString 并替换所有出现的地方。我知道有很多类似的帖子,但我不明白(比如这个 Replace substring with another substring C++ )
我也尝试做这样的事情来循环字符串:
string toSearch = chartDataString;
string toFind = "*A:";
for (int i = 0; i<toSearch.length() - toFind.length(); i++){
if(toSearch.substr(i, toFind.length()) == toFind){
chartDataString.replace(chartDataString.find(toFind), 3, "[A]\n");
}
}
编辑考虑到建议,这在理论上应该可行,但我不知道为什么它不
size_t startPos=0;
string myString = "*A";
while(string::npos != (startPos = chartDataString.find(myString, startPos))){
chartDataString.replace(chartDataString.find(myString, startPos), 3, "*A\n");
startPos = startPos + myString.length();
}
原文由 Sarah 发布,翻译遵循 CC BY-SA 4.0 许可协议
尝试以下