簡體   English   中英

錯誤“表達式:字符串下標超出范圍”

[英]Error “Expression: string subscript is out of range”

我正在嘗試編寫一個代碼,以允許用戶輸入一個非常大的數字,“比正常的“ int”的大小大”,因此,我試圖將用戶輸入作為字符串並從字符串中獲取每個值並傳遞給它到int,例如s="3786473646768"因此int將采用每個值並將其保存在向量中。

這是一種非常簡單的語法,我輸入了兩個字符串,但是如果它們不相等,則會在窗口中顯示“表達式:字符串下標超出范圍”,有什么幫助嗎?

#include "stdafx.h"
#include <iostream>
#include <sstream>
#include <string>
#include <vector>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{

  int val1=0,val2=0,val3=0,val4=0;
  string i,p;
  vector <int>add;
  vector <int>sub; 
  cout<<"Enter a number: "<<endl;
  cin>>i;
  int sizei=i.length();
  cout<<"Enter a number: "<<endl;
  cin>>p;
  int sizep=p.length();

  for (int n=0; n<sizei; n++)
   {
     val1=int(i[n]);
     val1=val1-48;
     val2=int(p[n]);
     val2=val2-48;
     val3=val1+val2;
     val4=val1-val2;
     add.push_back(val3);
     sub.push_back(val4);
   }
  cout<<"\n";
  for(unsigned int a=0;a<add.size();a++)
      cout<<add.at(a);
  cout<<"\n";
  for(unsigned int a=0;a<sub.size();a++)
      cout<<sub.at(a);
    system("pause");
    return 0;
}
for (int n=0; n<sizei; n++)

在此循環中,n的值從0 ... sizei - 1

但是,如果sizep小於sizei - 1 ,它將嘗試訪問p[n]或等效的p[sizei-1] ,它位於您聲明的字符串的邊界之外。

暫無
暫無

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

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