gpt4 book ai didi

C++ 为什么我的编译器成功了,但我的计算机给出了调试错误?

转载 作者:行者123 更新时间:2023-11-28 01:28:34 24 4
gpt4 key购买 nike

所以我在尝试运行我的程序时解决了编译器的错误,现在从我所看到的,编译器成功了,但是除了文件位置之外控制台是空白的,并且弹出一个错误窗口,上面写着“调试错误!已从 Microsoft Visual c++ 运行时库调用 [程序文件位置名称] abort()”。我不知道此错误是由我的计算机或代码还是其他原因引起的。如您所知,我对此很陌生,对如何诊断编译器未给出的问题一无所知。

下面是出现这个错误的程序。旨在最终在以罗马数字形式输入的两个值之间执行运算。

#include <iostream>
#include <cmath>
#include <fstream>
#include <string>
#include <algorithm>

using namespace std;


int conNtoD(char val)
{
int number;
if (val == 'M')
{
number = 1000;
}
else if (val == 'D')
{
number = 500;
}
else if (val == 'C')
{
number = 100;
}
else if (val == 'L')
{
number = 50;
}
else if (val == 'X')
{
number = 10;
}
else if (val == 'V')
{
number = 5;
}
else if (val == 'I')
{
number = 1;
}
else
{
number = 0;
}




return number;
}

int get_data(string numerone)
{
int pos = 0;
char val;
int totalval1=0;
int cou = numerone.length();


while (pos <= cou)
{
int number=0;
val= numerone.at(pos);
number = conNtoD(val);
totalval1 = totalval1 + number;


pos++;


}




return totalval1;

}

int get_data2 (string numertwo)
{
int pos = 0;
char val;

int totalval2=0;
int cou = numertwo.length();

while (pos <= cou)
{
int number = 0;
val = numertwo.at(pos);
number = conNtoD(val);

totalval2 = totalval2 + number;
pos++;


}




return totalval2;
}






int main()
{
string numerone;
string numertwo;
char op;
int x = 0;
int pos = 0;
int pos2 = 0;
ifstream numerals("Numerals.txt");
while (numerals >> numerone >> numertwo >> op)
{

int totalval1= get_data(numerone);
int totalval2= get_data2(numertwo);


cout << numerone << " " << numertwo << " " << op << endl;

cout << totalval1 << " and " << totalval2 << endl;

}



}

最佳答案

这是你的问题

    int cou = numerone.length();
...
while (pos <= cou)

cou 是字符串的长度。例如,如果您的字符串是“MM”,则长度为 2。字符串字符的有效索引范围从 0 到 length-1。即0和1是长度为2的字符串的字符的有效索引。

但是,您的 while 循环正在评估 pos 从 0 到并包括长度。当您尝试访问字符串 MM 的位置 2 时,at 方法将抛出异常。

简单的解决方法是少迭代一次

    while (pos < cou)

仅此而已。

关于C++ 为什么我的编译器成功了,但我的计算机给出了调试错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52711841/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com