簡體   English   中英

Microsoft C ++異常:std :: out_of_range錯誤?

[英]Microsoft C++ exception: std::out_of_range error?

我不斷收到以下錯誤:

Unhandled exception at 0x74BDD8A8 in FileName.exe: Microsoft C++ exception: std::out_of_range at memory location 0x004FA55C.

我已經進行了一些搜索,但無法解決此問題。 我確實將其范圍縮小為out of range錯誤來自我的string fdata變量。 這是我的代碼中發生錯誤/異常的地方:

void MyClass::MyMethod10()
{
    string fdata;
    char num[100];
    int i = 0,k=0;
    unsigned int m,j=0;

    inputFile.open("sec1.txt", ios::in);
    inputFile >> fdata;
    while (j<fdata.length())
    {
       while (fdata.at(j) != '+')
       {
          if (fdata.at(j) != '*' && j<fdata.length())
          {
            num[k] = fdata.at(j);
            k++;
          }
          else
          {
             num[k] = '\0';
             m = atoi(num);
             //cout << m << endl;
             MyMethod22(m);
             k = 0;
          }
          j++;
       }
       MyMethod22(43);
       j++;  
   }
   inputFile.close();
   outputFile.open("sec2.txt", ios::out);
   while (i<index)
   {
     outputFile << (char)data[i];
     i++;
   }
   outputFile.close();
   CleanBuffer();
}

sec1.txt文件包含以下數據

25750*23084*57475*15982*+57475*15982*+13364*15982*26260*+48840*32397*13364*15982*57475*11371*21876*+25197*

while()循環部分中,我的程序能夠從文件中正確讀取數據。 問題/錯誤/異常發生在我的程序從文件中獲取最后一個數字的地方。 我猜問題出在while()循環中,但我無法弄清楚出了什么問題。 我所能做的就是將錯誤范圍縮小到string fdata從文件中讀取最后一個數字后超出范圍。 我想知道是否有人可以幫助我解決這個問題或提出一些我可能錯過的建議?

您遇到的實際問題在這里:

   while (fdata.at(j) != '+')
   {
      ...
      j++;
   }

請注意,您遞增j ,並在檢查j是否在范圍內之前嘗試讀取第j個字符。 要解決此問題,請按如下所示進行更改:

   while (j < fdata.size() && fdata.at(j) != '+')
   {
      ...
      j++;
   }

暫無
暫無

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

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