所以我正在编写一个程序,其中一部分是处理一个字符串数组,并且从字符串数组中的每个元素,我试图取出字符串中的每个二元组并将其放在另一个字符串中阵列。我试图通过使用substr函数来做到这一点,并试图调整它,但我继续得到一个OOR错误。
代码为:
“numwords”是字符串数组中的单词数 “lowpunct”是字符串数组
for(i=0; i<numwords;i++)
{
for(x=0; x<=lowpunct[i].length()-2;x++)
{
if(lowpunct[i].length()-2 <=0)
{
bigram[count]=lowpunct[i];
count++;
}
else
{
bistring=lowpunct[i].substr(x,2);
bigram[count]=bistring;
count++;
bistring="";
}
}
}
答案 0 :(得分:0)
string :: length()是一个无符号的size_t,所以
if(lowpunct[i].length()-2 <=0)
遇到长度小于2的字符串时,会出现问题。这是因为下溢无符号整数的结果就是 数字以最高值包裹。 for循环条件也是错误的。
改写他们这样的东西:
for(x=0; x+2 <= lowpunct[i].length();x++)
if(lowpunct[i].length() <= 2)
答案 1 :(得分:0)
在你的循环中,你将从0变为低位[i] .length() - 2。 (包括2号)。这意味着只剩下1个字符。将for循环中的“&lt; =”更改为“&lt;”。