在c ++中更改参数值

cal*_*pto -1 c++ arguments for-loop dynamic

为什么在for循环中更改参数会导致程序崩溃?它对c ++来说太动态了吗?

for(unsigned int x = 0; x < mystring.size(); x++)
    mystring = mystring.substr(0, mystring.size());
Run Code Online (Sandbox Code Playgroud)

当我改变我的真实代码来执行此操作(mystring.size()> 0)时,我的程序仍然崩溃

编辑:

好.你们是对的,由于mystring值的变化,代码没有崩溃.但是,这段代码很简单,我没看到错误来自哪里:

template <class Algorithm>
class ECB{  // Electronic codebook
  private:
    Algorithm algo;
    uint8_t blocksize;

  public:
    ECB(Algorithm instance, std::string = "")
      : algo(instance) {
        blocksize = algo.blocksize() >> 3;
      }

    std::string encrypt(std::string data){
        data = pkcs5(data, blocksize);

        return data;
    }

    std::string decrypt(std::string data){

        return remove_padding(data);
    }
};
Run Code Online (Sandbox Code Playgroud)

请不要链接我到网站教我如何使用ECB.它不像它的硬.但是,这段代码很烦人

Arm*_*yan 6

这不应该崩溃.你实际上在做的是将相同的字符串分配给同一个变量n次,其中n是字符串的长度.这在C++中是完全合法的.你没有告诉我们完整的故事

  • 问题不在循环内部,而是在周围的代码中.请发布完整的代码 (2认同)