[英]libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: basic_string Error?
[英]terminating with uncaught exception of type std::out_of_range: basic_string
#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
。 這會導致不確定的行為。 由於您尚未說明該程序應該執行的操作,因此我無法為此建議修復程序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.