C++中以下代码编译通过,但是运行中却提示string subscript out of range 不知道为什么?

/*problem:Boj 1782
*思路:用数组表示decode,顺序比较,顺序输出
用string读取key和code
*/
#include<iostream>
#include<string>
using namespace std;
int main(){
int t;
cin>>t;
for(int i=0;i<t;i++){
string key(10,'0'),code(9,'0');
cin>>key>>code;
for(string::size_type j=0;j!=code.size();j++)
for(string::size_type k=0;k!=10;k++)
if(code[j]==key[k])
cout<<(k+1)%10;
cout<<endl;
}
return 0;
}
求改!
最新回答
若曦

2024-09-14 02:18:10

这个问题是你的数组的边界处了问题。比如一个数组的大小是N,
那么在表示的时候是从0到N-1,于是当你在写程序的时候,将数组的范围小于0,或者大于等于N-1,都是要报这个错误的。
战场

2024-09-14 00:09:22

程序本身没有语法和逻辑错误,只是整个程序的意思比较混乱,
上面程序大概的意思是,
进行t次循环(不过此处几乎没有任何意义),每次循环都在做同样的事情,
即:用string类初始化化code和key ,其中code为包含9个'0'字符的字符串,key为包含10个'0'字符的字符串,然后分别输入10个字符和9个字符给key 和code,
并将code中的每一字符与key中的字符进行比较,如果在key中找到了该字符则输出该
字符在key中的位置,其中0表示key中最后一个位置
输入举例:
2
2365423655
563455345
49038275490490275490
5454334345
323232356
568568568568130
守护在此方

2024-09-14 00:25:26

你用的是什么编译器呀!
三分醒七分醉

2024-09-14 01:36:54

额。。。我试了一下,编译没有问题。。
再是吧。。你这个东东是想实现什么功能呢??没看出来呢。。。

期待继续交流。。。
追答
额。。。ACM的题呢,,呵呵。。。我的英语功底不够。。看不懂题意,你给解释一下什么意思,然后我看看咋弄。。。