2

ユーザーが「通常の「int」のサイズよりも大きい」非常に巨大な数値を入力できるようにするコードを作成しようとしているため、ユーザー入力を文字列として取得し、文字列から各値を取得して渡そうとしていますたとえばs="3786473646768"、int は各値を取り、それをベクトルに保存します。

これは非常に単純な構文ですが、2 つの文字列を入力しますが、それらが等しくない場合、「式: 文字列の添え字が範囲外です」というウィンドウが表示されます。

#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;
}
4

1 に答える 1

0
for (int n=0; n<sizei; n++)

このループ内で、n の値は0 ... sizei - 1

ただし、sizep より小さい場合、宣言した文字列の範囲外にあるsizei - 1にアクセスしようとします。p[n]p[sizei-1]

于 2012-10-20T10:05:39.193 に答える