簡體   English   中英

我收到調試斷言失敗,行1662

[英]I get a debuggging assertion failed Line 1662

你們能告訴我為什么會出現此錯誤嗎?


調試斷言失敗! 程序:C:\\ Widnows \\ system32 \\ MSVCP100D.dll文件:c:\\ program files(x86)\\ microsoft visual studio 11.0 \\ vc \\ include \\ xstring行:1662

表達式:字符串下標超出范圍

有關程序如何導致斷言失敗的更多信息,請參見有關斷言的直觀c ++文檔。

這是我發現導致問題的代碼。 我的測試用例的學生是30個字符。 大小也為10。

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

用以下方法制作了尺寸

    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];
    }

正如注釋所建議的那樣,“字符串下標超出范圍”表示您正在嘗試訪問不屬於學生對象的內存元素。 您說您已將學生[11]的呼叫限制為學生[20]。 您確定這在范圍內嗎? 嘗試在過程的每個階段,更改變量值的語句之前和之后以及每次循環時打印變量,以查看數據是否符合您的預期。

我不確定您要對此循環執行什么操作,但是也許首先從student數組中提取所需的數據,然后將其分配給答案數組會更容易。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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