#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
最佳答案
我看到的问题:
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
。这会导致不确定的行为。由于您尚未说明该程序应该执行的操作,因此我无法为此提供建议的修复程序。关于c++ - 以类型为std::out_of_range的未捕获异常终止:basic_string,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41456900/