在比较二进制数字输入的字符时抛出一个'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() */
THE END
二维码