该代码具有标题,实现和主文件。应该增加字符串中所有字符的ASCII值,然后返回与该ASCII值关联的字符值。
有问题的代码如下:
for(int i = 0; i < sizeof(letters); i++)
{
if ((int)letters.at(i) >= (int)'a' && (int)letters.at(i) <= (int)'z')
{
letters.at(i) = (((letters.at(i) - 'a') + 1) % 26 + 'a');
}
else if ((int)letters.at(i) >= (int)'A' && (int)letters.at(i) <= (int)'Z')
{
letters.at(i) = (((letters.at(i) - 'a') + 1) % 26 + 'A');
}
}
HomeworkNine.exe中0x750A3DB2的未处理异常:Microsoft C ++异常:内存位置0x00EFF7E8的std :: out_of_range。发生
我不知道边界在哪里,因为我认为模数会解决这个问题。
[sizeof(letters)
仅在letters
是char
的纯数组时才是正确的,而不能,因为纯数组不具有at
成员函数。
您需要将其替换为letters.size()
。
不需要那些强制转换为int
的对象,因为编译器会为您执行这些操作(如果您的平台上未签名unsigned
,则为char
)。内置算术运算符仅适用于int
或更大的类型,请参见Integral promotion。