【问题标题】:Error Handling C++ : Program never stops错误处理 C++:程序永不停止
【发布时间】:2023-04-05 23:43:01
【问题描述】:

我刚开始接触 C++,请原谅我的误解。

我正在制作一个程序,其中下一个辅音被添加到每个辅音上。

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

因为 k 在 j 之后,所以它被插入到 j 之后,o 是元音,所以在 o 之后没有插入任何东西,而 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); 行。有什么指导吗?

【问题讨论】:

  • 你已经问过了。
  • @NeilButterworth 我已经修复了参数,因为插入函数接受索引和字符指针作为参数。问题是不同的。 en.cppreference.com/w/cpp/string/basic_string/insert (2)
  • 停止使用 charchar* 并使用 std::string 做所有事情。
  • 您正在插入一个辅音,这会增加str 的长度。当你再次循环时,你是否检查了新插入的辅音,导致添加辅音的循环永无止境?
  • 那行有什么问题?您观察到哪些不良行为?

标签: c++ pointers error-handling


【解决方案1】:

当您添加一个辅音,然后只增加一次 i 时,您的光标最终会落在新的辅音上,因此您总是在添加新的辅音。像这样:

joy
jkoy
jkloy
jklmoy

等等。

解决方案是在添加辅音时增加i。保留for 循环内的增量;你只需要在str.insert(...) 命令之后再次增加i

【讨论】:

  • 这只是问题的一部分。
  • @FeiXiang 我在评论中看到了你的观点。谢谢你指出这一点。我没想过要忽略循环本身的问题。
猜你喜欢
  • 1970-01-01
  • 2015-07-14
  • 2011-12-24
  • 1970-01-01
  • 2019-01-26
  • 1970-01-01
  • 2016-10-26
  • 2022-01-12
  • 1970-01-01
相关资源
最近更新 更多