我没有得到为什么调试断言在我的程序上失败的答案

时间:2016-12-24 09:12:10

标签: c++ arrays

我是编码社区的新手。这是我的第一年,我从未被告知调试断言错误。我已经尝试使用谷歌搜索几种解决方案,但我似乎无法将它们与我的代码联系起来,但我找不到答案。

我希望得到一些关于' Debug Assertion Failed的帮助。表达式:字符串下标超出范围。'

#include <iostream>
#include <string>
using namespace std;

//Declaring variables and arrays
int no_of_subs;

int main ()
{
    cout << " Please enter the number of subjects \n \n ";
    cin >> no_of_subs;

// Local Variable
string grade;

for (int i=1; i <= no_of_subs; i++)
    for (int counterSubs = 0; counterSubs < no_of_subs; counterSubs++)
    {
        cout << " Please enter the grade obtained for each subject \n \n "
            << i++ << " : ";
        cin >> grade [counterSubs];
    }

    system ("PAUSE");
    return 0;

}

我的代码是关于GPA的。我想制作一个数组,用于存储学生为每个科目获得的成绩。我期待输出如下:

&#34;请输入每个科目的成绩

1:用户输入成绩 2:

1 个答案:

答案 0 :(得分:0)

这个程序有很多问题。您似乎试图以1而不是0开始索引。此外,您似乎正在尝试将成绩读入空字符串并将此空字符串的不存在元素设置为正在读入的成绩。此外,您是在您的i声明中以及在阅读成绩时递增for,我认为这不是您想要的。

我认为你在这里有一些非常根本的误解。我也怀疑你正在尝试做作业,所以我把它留给你的助手和你自己纠正这些。

您正在获得的调试断言错误是我认为您的实现正在执行的操作。通常这个程序会崩溃。但是因为你试图访问一个字符串中不存在的元素,你的实现可能会有一些有用的代码,它们会抱怨而不是崩溃。所以,这不是C ++的标准部分,也不是可以指望发生的事情。我很惊讶你的实施正在做这件事。