我正在尝试制作一个代码以允许用户输入一个非常大的数字“大于普通“int”的大小,所以我试图将用户输入作为一个字符串并从字符串中获取每个值并将其传递给一个 int,例如 s="3786473646768"
,因此 int 将获取每个值并将其保存在一个 vector 中。
这是一个非常简单的语法,我输入了两个字符串,但如果它们不相等,它会给我一个窗口,显示“表达式:字符串下标超出范围” 有什么帮助吗?
#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]
,它超出了您声明的字符串的范围。
关于c++ - 错误 "Expression: string subscript is out of range",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987273/