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

时间:2012-05-22 22:26:57

标签: c++ string

项目

我认为我会创建一个程序,该程序使用以下语法获取文件:old_word:new_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();
}
}

程序在此循环中失败:

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

line是从getline函数获取的缓冲区。 toStrings是从语言定义文件加载的,因此来自fromStrings。

有人可以告诉我为什么这会进入一个无限循环并可能告诉我如何修复它?如果您需要,完整来源位于http://pastebin.com/zXFFvUSm

1 个答案:

答案 0 :(得分:0)

在调试器中运行它。初学者(或初学者到特定语言)程序员经常高估调试器学习和使用的难度。您可以学习足够的dbx来解决这个问题,并且花费了大量时间来询问这个问题并等待答案 - 是的,它们很容易用于这样的简单任务。