gpt4 book ai didi

c++ - 找不到 vector 使用中的 fatal error

转载 作者:行者123 更新时间:2023-11-28 05:54:33 25 4
gpt4 key购买 nike

我一直在尝试将两个数字作为字符串读取,将它们转换为 int vector ,然后将它们相加用于我在学校的实验室。我已经运行我的代码来发现这个错误:

Debug Assertion Failed!

Program: C:\windows\SYSTEM32\MSVCP140D.dll File: c:\program files (x86)\microsoft visual studio 14.0\vc\include\xstring Line: 1681

Expression: vector subscript out of range

For more information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

我试过重试,但它会打开另一个对话框,提示调试已到达断点,此时我无法继续调试。这是我为感兴趣的人编写的代码(Microsoft Visual Studio 编译器):

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void input(string &largeString1, string &largeString2);
void convert(string largeString1, string largeString2, vector<int> &largeInt1, vector<int> &largeInt2);
int asciiToInt(char ch);
void add(vector<int> largeInt1, vector<int> largeInt2, vector<int> &finalInt);
void output(const vector<int> finalInt);

int main()
{
string largeString1;
string largeString2;
vector<int> largeInt1(12, 0);
vector<int> largeInt2(12, 0);
vector<int> finalInt(13, 0);

for (int i = 0; i < 4; i++)
{
input(largeString1, largeString2);
convert(largeString1, largeString2, largeInt1, largeInt2);
add(largeInt1, largeInt2, finalInt);
output(finalInt);
}

system("pause");

return 0;
}
void input(string &largeString1, string &largeString2)
{
cout << "Input:" << endl << endl;
cin >> largeString1;
cin >> largeString2;
}
void convert(string largeString1, string largeString2, vector<int> &largeInt1, vector<int> &largeInt2)
{
int size1 = size(largeString1);
int size2 = size(largeString2);
for (int i = 0; i < 12; i++)
{
int dynamicsize1 = size1 - i;
largeInt1[11 - i] = asciiToInt(largeString1[dynamicsize1 ]);
}
for (int j = 0; j < 12; j++)
{
int dynamicsize2 = size2 - j;
largeInt2[11 - j] = asciiToInt(largeString2[dynamicsize2 ]);
}
}
int asciiToInt(char ch)
{
return (ch - '0');
}
void add(vector<int> largeInt1, vector<int> largeInt2, vector<int> &finalInt)
{
for (int i = 0; i < 13; i++)
{
finalInt[12 - i] = largeInt1[11 - i] + largeInt2[11 - i];
}
}
void output(const vector<int> finalInt)
{
cout << endl << "Output:" << endl << endl << "The sum is: ";
for (int i = 0; i < 13; i++)
{
cout << finalInt[i];
}
}

最佳答案

我相信这是您正在寻找的错误:

void add(vector<int> largeInt1, vector<int> largeInt2, vector<int> &finalInt)
{
for (int i = 0; i < 13; i++)
{
finalInt[12 - i] = largeInt1[11 - i] + largeInt2[11 - i];
}
}

请注意 largeInt1largeInt2 的大小为 12。但是,当 i 达到 12 时,您得到 -1 索引

finalInt[0] = largeInt1[-1] + largeInt2[-1];

关于c++ - 找不到 vector 使用中的 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34478245/

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