-1

我有这个代码:

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::atif(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

请看最后两行 - 它准确地表明下一行计算的内容不存在!当然,我试图寻找“愚蠢”的错误和小调试,但没有任何结果,你可以在上面看到。请在我的情况下帮助我。

4

1 回答 1

0

首先,您不能像以前那样为数组分配内存。在wiersze[n]变量 n 必须在编译时知道,但这里不是。您必须动态初始化数组:

string* wiersze = new string[n];
于 2014-06-09T14:10:46.247 回答