我有这个代码:
int n,m; // n - rows count , m - columns in each row count
cin >> n >> m;
string wiersze[n];
int wynik=0;
for(int i = 0; i < n;i++)
{
cin >> wiersze[i];
}
for(int i = 0; i < n;i++)
{
for(int j =0; j<m-1;j++)
{
cout << j << " " << j+1<<endl; // debbuging line
cout<<wiersze[i].at(j)<<wiersze[i].at(j+1)<<endl; // debbuging line
if(wiersze[i].at(j) == wiersze[i].at(j+1))wynik++;
}
}
当字符串中有两个字母时,我应该增加 variable wynik
。我不知道为什么,但在这个例子中运行该代码:
4 4
阿巴
aaab
阿巴
巴巴
导致行中的std::out_of_range
错误。string::at
if(wiersze[i].at(j) == wiersze[i].at(j+1))wynik++;
我尝试调试并在循环中添加了两行以查看发生了什么。结果:
0 1
啊
1 2 抗体
2 3
巴
0 1
啊
1 2
啊
2 3
抗体
0 1
啊
1 2
抗体
2 3
巴
0 1
bb
1 2
巴
2 3
啊
请看最后两行 - 它准确地表明下一行计算的内容不存在!当然,我试图寻找“愚蠢”的错误和小调试,但没有任何结果,你可以在上面看到。请在我的情况下帮助我。