0

该项目

我想我会制作一个程序,该程序使用以下语法获取文件: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]);
    }

linegetline是从函数中获得的缓冲区。toStrings从语言定义文件中加载,fromStrings 也是如此。

谁能告诉我为什么这会进入无限循环并可能告诉我如何解决它?如果您需要,完整的源代码位于http://pastebin.com/zXFFvUSm 。

4

1 回答 1

0

在调试器中运行它。初学者(或特定语言的初学者)程序员经常高估调试器的学习和使用难度。您可能已经学习了足够多的 dbx 来解决这个问题,并且在您提出这个问题并等待答案所花费的时间内完成了 - 是的,它们对于像这样的简单任务非常容易使用。

于 2012-05-22T22:30:15.237 回答