2012-10-20 49 views
2

我想讓代碼允許用戶輸入一個非常大的數字「大於正常的」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; 
} 

回答

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

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

然而去,如果sizep小於sizei - 1,它會嘗試訪問p[n]或等價地,p[sizei-1],這是你聲明的字符串的邊界之外。

+0

噢是的..我沒有意識到這一點 非常感謝你真的幫助! – SUE