C++ C++;字符串替换函数无限循环

C++ C++;字符串替换函数无限循环,c++,string,C++,String,项目 我想我会制作一个程序,用以下语法获取一个文件:old\u-word:new\u-word,以便更轻松地更改语法。我还有其他计划,但现在这个计划的核心不起作用 问题 我没有用C++很长时间,所以我还在学习。我正在使用其他人的字符串替换函数,但它陷入了一个无限循环。该函数包含一些我不熟悉的语法,因此我无法说出它失败的原因。其他所有函数都会正确返回 字符串替换函数如下所示: //!Not my work void replaceAll(std::string& str, std::st

项目

我想我会制作一个程序,用以下语法获取一个文件:
old\u-word:new\u-word
,以便更轻松地更改语法。我还有其他计划,但现在这个计划的核心不起作用

问题

我没有用C++很长时间,所以我还在学习。我正在使用其他人的字符串替换函数,但它陷入了一个无限循环。该函数包含一些我不熟悉的语法,因此我无法说出它失败的原因。其他所有函数都会正确返回

字符串替换函数如下所示:

//!Not my work
void replaceAll(std::string& str,  std::string& from,  std::string& to) {
size_t start_pos = 0;
while((start_pos = str.find(from, start_pos)) < std::string::npos) {
    str.replace(start_pos, from.length(), to);
    start_pos += to.length();
}
}
/!不是我的工作
void replaceAll(std::string&str,std::string&from,std::string&to){
大小\u t开始位置\u位置=0;
while((start_pos=str.find(from,start_pos))
程序在此循环中失败:

for(int secInd=0; secInd<members; secInd++)
    {
        replaceAll(line[index],toStrings[secInd],fromStrings[secInd]);
    }

for(int-secInd=0;secInd在调试器中运行它。初学者(或特定语言的初学者)程序员经常高估调试器的学习和使用难度。你本可以学习足够多的dbx来解决这个问题,并且用你问这个问题并等待答案所花费的时间就可以做到这一点-是的,它们很容易用于像这样的简单任务。

首先将
更改为
!=std::string::npos
不,StackOverflow不是一个人工调试程序。replaceAll函数的第二个参数是std::string&from,第三个参数是std::string&to,但是当调用它时,您将tostring作为第二个参数传递,将fromStrings作为第三个参数传递。这是故意的还是偶然的ds1848:这是一个问题,是的。对于所有推荐调试器的人,谢谢。实际上我以前从未听说过或使用过调试器。