簡體   English   中英

以類型為std :: out_of_range的未捕獲異常終止:basic_string

[英]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

我看到的問題:

  1. 您需要使用s.length()而不是sizeof(s)
  2. 您需要使用從0而不是1開始的索引值。
  3. 您需要使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM