错误处理C ++:程序永不停止

时间:2018-07-11 23:14:34

标签: c++ pointers error-handling

我刚开始使用C ++,所以请谅解。

我正在编写一个程序,其中将下一个辅音添加到每个辅音上。

例如,如果输入为joythethen,则结果为jkoyz。

因为k在j后面,所以它被插入j后面,所以o是元音,所以在z后面不插入任何东西,在z到y之后插入任何东西,因为z在字母表中位于y之后。

#include <iostream>
#include <string>
#include <typeinfo>

using namespace std;

int main ()
{

    string str = "joy";

    string constant = "bcdfghjklmnpqrstvwxyzz";

     for(int i = 0; i < str.length(); i++){

        if (constant.find(str[i]) != string::npos) {

            int index = constant.find(str[i]);

            char closestConstant = constant[index + 1];           
            char *closestConstantPointer = &closestConstant;

            str.insert(0, closestConstantPointer);

        }
    }
}

问题出在str.insert(0, closestConstant);行中。有指导吗?

1 个答案:

答案 0 :(得分:2)

添加辅音后,仅将i递增一次,光标最终移到新的辅音上,因此您总是要添加新的辅音。像这样:

joy
jkoy
jkloy
jklmoy

等等。

解决方案是每添加一个辅音就增加i。将增量保留在for循环内;您只需要在i命令之后立即再次增加str.insert(...)