在比较二进制数字输入的字符时抛出一个'std::out_of_range实例后调用终止

我对编码很陌生,遇到了以下错误。

terminate called after throwing an instance of 'std::out_of_range'
  what():  basic_string::at: __n (which is 6) >= this->size() (which is 6)
Aborted (core dumped)

以下代码是:

#include <iostream>
#include<algorithm>
#include<string>
using namespace std;

int main()
{
    int a,b;
    cin>>a>>b;

    string  sa=to_string(a);
    string sb=to_string(b);


    int l=sa.length();

    for(int i=0;i<l;i++)
    {
        if(sa.at(i)==sb.at(i))
        {
            cout<<0;
        }
        else
            cout<<1;
    }
}

这个问题的输入是

1010100

0100101

任何有关这方面的帮助将不胜感激!

回答

由于前导零,第二个输入读取为 100101。
尝试访问与 1010100 一样多的字符将超出其长度。

要解决以字符串形式读取两者。

例如如下(请注意,代码仅演示了我提出的更改,它仍然容易受到不同长度的输入的影响,100 10并且还有其他缺点):

    string  sa,sb;
    cin>>sa>>sb;
    /* no to_string() */


以上是在比较二进制数字输入的字符时抛出一个'std::out_of_range实例后调用终止的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>