【问题标题】:Error "Expression: string subscript is out of range"错误“表达式:字符串下标超出范围”
【发布时间】:2012-10-20 09:56:02
【问题描述】:

我正在尝试编写一个代码以允许用户输入一个非常大的数字“大于正常“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;
}

【问题讨论】:

    标签: c++ visual-c++


    【解决方案1】:
    for (int n=0; n<sizei; n++)
    

    在这个循环中,n 的值来自0 ... sizei - 1

    但是,如果 sizep 小于sizei - 1,它将尝试访问p[n] 或等效的p[sizei-1],这超出了您声明​​的字符串的范围。

    【讨论】:

    • 哦,是的..我没有意识到这一点非常感谢它真的有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-31
    • 2014-03-02
    • 2013-04-22
    • 2012-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多