异常:Microsoft C ++异常:使用std :: stoi时,内存位置0x010FF288的std :: out_of_range

时间:2020-11-10 22:20:49

标签: c++

我正在尝试制作一个应该加密数字的程序。

#include <iostream>  
#include <string>

int intToBin(int num)
{
    std::string bin = "";
    while (num > 0)
    {
        bin += std::to_string(num % 2);
        num /= 2;
    }

    std::reverse(begin(bin), end(bin));
    int nBin = std::stoi(bin);
    return nBin;
}

int XOR(int b1, int b2)
{
    if (b1 == 1 && b2 == 1)
        return 0;
    else if (b1 == 0 && b2 == 0)
        return 0;
    else
        return 1;
}

int encrypt(int value, int key)
{
    std::string encrypted = "";

    value = intToBin(value);
    key = intToBin(key);

    std::string sValue = std::to_string(value);
    std::string sKey = std::to_string(key);
    
    int valueIteration = 0;
    while (valueIteration < sValue.size())
    {
        for (int i = 0; i < sKey.size(); i++)
        {
            encrypted += std::to_string(XOR(sKey[i], sValue[valueIteration]));
            valueIteration++;
        }
    }
    return std::stoi(encrypted);
}

int main()
{
    int code = encrypt(1500, 4);
    std::cout << code << std::endl;
}

但是,在运行期间,int nBin = std::stoi(bin);行上出现了异常

Unhandled exception at 0x77704662 in learnc++.exe: 
Microsoft C++ exception: std::out_of_range at memory location 0x003BF9C0.

我首先编写了intToBin函数,并且在测试它时运行良好。当我添加encrypt函数时,问题开始了。

此外,我不知道为什么,但是如果在某种程度上相关,我会在行signed/unsigned mismatchwhile (valueIteration < sValue.size())上收到for (int i = 0; i < sKey.size(); i++)警告。

0 个答案:

没有答案
相关问题