抛出'std :: out_of_range'实例后调用C ++终止

时间:2013-10-25 07:04:47

标签: c++

运行时出现此错误:

在抛出'std :: out_of_range'的实例后终止调用   what():basic_string :: at 中止(核心倾销)

我是全新的,任何其他提示也将受到赞赏。

1 #include <iostream>
2 #include <string>
3 #include <cstdlib>
4 #include <cstring>
5 #include <cctype>
6 
7 using namespace std;
8 
9 bool isvowel(char);
10 string pigl(string);
11 string rotate(string);
12 
13 int main (int argc, char *argv[])
14 {
15    string sentance; //spelled sentence wrong the whole time so im gonna go with it
16    pigl(sentance);
17 
18    if (argc != 2)
19    {
20       cout << "useage: ./pig [string of text]" << endl;
21       return 0;
22    }
23    while (--argc) pigl (*++argv);
24    return 0;
25 }
26 
27 bool isvowel(char ch)
28 {
29    switch (ch)
30    {
31       case 'a':
32       case 'e':
33       case 'i':
34       case 'o':
35       case 'u':
36       case 'y':
37          return true;
38 
39       default:
40          return false;
41    }
42 }
43 
44 string pigl(string sentance)
45 {
46    int length;
47    int counter;
48    bool found_vowel;
49 
50    if (isvowel(sentance.at(0)))
51    {
52       sentance = sentance += "way";
53    }
54    else
55    {
56       sentance = sentance += " ";
57 
58       sentance = rotate(sentance);
59       length = sentance.size();
60       found_vowel = false;
61       for (counter = 1; counter < length -1; counter++)
62          if (isvowel(sentance.at(0)))
63          {
64             found_vowel = true;
65             break;
66          }
67          else
68          {
69             sentance = rotate(sentance);
70          }
71       if (!found_vowel)
72       {
73          sentance = sentance.substr(1,length) += "ay";
74       }
75       else
76          sentance = sentance += "way";
77    }
78    return sentance;
79 }
80 
81 string rotate(string sentance)
82 {
83    int length = sentance.size();
84    string jumble;
85    jumble = sentance.substr(1, length) += sentance.at(0);
86    return jumble;
87 }

1 个答案:

答案 0 :(得分:3)

第50行中对sentence.at(0)的第一次调用将抛出异常,因为输入字符串为空(第15行)。