gpt4 book ai didi

c++ - 我收到调试断言失败的第 1662 行

转载 作者:行者123 更新时间:2023-11-28 07:03:02 24 4
gpt4 key购买 nike

你们能告诉我为什么会出现这个错误吗。


调试断言失败!程序:C:\Widnows\system32\MSVCP100D.dll文件:c:\program files (x86)\microsoft visual studio11.0\vc\include\xstring线路:1662

表达式:字符串下标超出范围

有关您的程序如何引起断言的更多信息失败,请参阅有关断言的 visual c++ 文档。

这是我发现导致问题的代码。我的测试用例的学生是 30 个字符。大小也是 10。

    for (count = 0; count < size; count++)
{
answers[count] = student[11 + (2*count)];
}

我通过下面的方法创建了size

    string examSize;
fstream questionNumber;
questionNumber.open("answers.txt", ios ::in);
getline(questionNumber, examSize);
int size = stoi(examSize);

我使用以下方法创建了答案。

     vector<char> answers(size,' ');

我用一个字符串创建了学生,它被一个 getline 函数占用了。

      getline(studentAnswers, student);

还有你们能告诉我是否有办法让我在这段代码中使用更多的指针吗?

截至目前,我已尝试使用此方法来检查学生是否溢出,我仍然得到相同的结果

错误

    for (count = 0; count < size; count++)
{
cout << student[11 + count];
}

最佳答案

正如评论所暗示的那样,“字符串下标超出范围”意味着您正在尝试访问不属于学生对象的内存元素。您说您已将对 student[11] 的调用限制为 student[20]。你确定这在范围内吗?尝试在流程的每个阶段、更改变量值的语句之前和之后以及每次循环中打印出变量,看看数据是否符合您的预期。

我不确定你想用这个循环做什么,但也许先从学生数组中提取你想要的数据,然后将它分配给答案数组会更容易。

关于c++ - 我收到调试断言失败的第 1662 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22159162/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com