Algorithm 编译器显示:已调用中止 < > C++编译器何时给出一个消息:“在抛出一个实例‘STD::OutoFixReal'后终止调用?”我在一个网站上尝试这个问题。我写了一个算法,但代码无法编译
我写的算法是这样的:Algorithm 编译器显示:已调用中止 < > C++编译器何时给出一个消息:“在抛出一个实例‘STD::OutoFixReal'后终止调用?”我在一个网站上尝试这个问题。我写了一个算法,但代码无法编译,algorithm,syntax,c++,Algorithm,Syntax,C++,我写的算法是这样的: int stringSimilarity(string s) { int size=s.size(), sum=0; for(int i=0; i<size; i++) { string sub_str; int temp_sum=0; //Creating a substring for comparison for(int j=i, l=0; j<size, l<size-i; j++, l++)
int stringSimilarity(string s) {
int size=s.size(), sum=0;
for(int i=0; i<size; i++)
{
string sub_str; int temp_sum=0;
//Creating a substring for comparison
for(int j=i, l=0; j<size, l<size-i; j++, l++)
{
sub_str.at(l)=s.at(j);
}
if(sub_str.at(0)==s.at(0))
{
temp_sum++;
int k=1;
while(sub_str.at(k)==s.at(k))
{
temp_sum++;
k++;
}
}
sum=sum+temp_sum;
}
return sum;}
int字符串相似性(字符串s){
int size=s.size(),和=0;
对于(int i=0;i来自
该功能会自动检查pos是否为的有效位置
字符串中的字符(即pos是否小于字符串
长度),如果不是,则抛出超出范围的异常
在这里,sub_str
是一个空字符串(长度为0),但您尝试在内部循环的第一行中访问它:
sub_str.at(l)=s.at(j);
克服此问题的一种方法是初始化字符串,使其具有相同长度的s
,并对其进行适当的编辑。我们在此网站上不处理实际的代码。但请注意,您的代码是编译的,即,您看到的异常是运行时错误。这是由于对容器(如字符串)不进行索引而导致的。也就是说,字符串有三个元素但是你尝试访问第四个元素。我在哪里可以得到适当的帮助?你能找到我超出容器限制的地方吗?还有一件事,那么这个站点是做什么的?问题是sub_str
是空的,但是你尝试访问sub_str.at(l)
,其中l
为0,且该元素不存在。我已将您的问题标记为迁移到,该问题涉及实际实现。但是,您的问题可能违反了他们的某些策略,但我不确定。请将问题陈述和错误消息作为文本而不是图像包含在内。此外,请描述您尝试的内容;您是否编写了测试,是否使用了调试器等@mrm进行了回答?