#include <iostream>
#include <string>
using namespace std;
int main() {
string s;
cin>>s;
int i;
char c;
for(i=1;i<=sizeof(s);i++){
if((s.at(i)>='a'&&s.at(i)<='z')||(s.at(i)>='A'&&s.at(i) <='Z')){
c=c+4;
if((s.at(i)>'Z'&&s.at(i)<'\136')||(s.at(i)>'z')){
c=c-26;
}
}
}
cout<<c;
return 0;
}
//以std :: out_of_range类型的未捕获异常终止:basic_string
答案 0 :(得分:2)
我看到的问题:
s.length()
代替sizeof(s)
。0
开始的索引值,而不是1
。i < ...
代替i <= ...
。以上所有内容均在for
声明中。使用:
for(i=0; i < s.length(); i++){
如果您能够使用C ++ 11编译器,则可以将其简化为:
for( auto ch : s ){
// Use ch instead of s.at(i) in the loop.
}
然后,你正在使用
c = c + 4;
和
c = c - 26;
即使您尚未初始化c
。这会导致未定义的行为。我无法建议修复,因为你还没有解释该程序应该做什么。