gpt4 book ai didi

C++ 段错误 - 核心已转储

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

<分区>

我遇到这个问题已经有一段时间了,我搜索过这种类型的错误,我相信它与内存泄漏或指向空指针的指针有关。

我一遍又一遍地检查了我的代码,但我无法准确找到此问题发生的位置,因为我不知道如何调试它。即使我尝试在代码的第一行断点,它也会崩溃。

它从文件中读取一堆 ISBN 并检查它们是否有效。

虽然看起来很多,其实道理很简单。

这是我的代码:

#include <iostream>
#include <fstream>
#include <iomanip>
#include <list>
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
#include <vector>

using namespace std;

class Isbn
{
private:
string isbnCode;

public:

Isbn()
{
}

Isbn(string isbn): isbnCode(isbn)
{
}

~Isbn()
{
}

string getIsbn()
{
return isbnCode;
}

void setIsbn(string input)
{
isbnCode = input;
}
};

void setListOfIsbn(const string filename, list<Isbn> &listOfIsbn);
void validateIsbns(const list<Isbn> listOfIsbn, list<bool> &validations);
void printValidations(const list<Isbn> listOfIsbn,
const list<bool> validations);
string bToS(const bool bValue);

int main(int argc, char *argv[])
{
list<Isbn> listOfIsbn;
list<bool> validations;

string inputFile = argv[1];

setListOfIsbn(inputFile, listOfIsbn);
validateIsbns(listOfIsbn, validations);
printValidations(listOfIsbn, validations);

return 0;
}

void setListOfIsbn(const string filename, list<Isbn> &listOfIsbn)
{
list<Isbn>::const_iterator iterator;

ifstream fin;

fin.open(filename.c_str());
char ch;
string isbnCode;

while (!fin.eof())
{
fin.get(ch);

if (ch == '\n')
{
Isbn isbn;

(isbn).setIsbn(isbnCode);
listOfIsbn.push_back(isbn);
isbnCode = "";
}
else
{
isbnCode.append(reinterpret_cast<const char*>(ch));
}
}
}

void validateIsbns(const list<Isbn> listOfIsbn, list<bool> &validations)
{
list<Isbn>::const_iterator itr;

for (itr = listOfIsbn.begin(); itr != listOfIsbn.end(); itr++)
{
Isbn isbn = *itr;
string isbnCode = isbn.getIsbn();
string isbnCodeReform = "";
vector<int> products;
int sumOfProducts = 0;
unsigned int i;

for (i = 0; i < isbnCode.length(); itr++)
{
if(isalnum(isbnCode[i]))
{
isbnCodeReform[i] = isbnCode[i];
}
}

for (i = 0; i < (isbnCodeReform.length() - 1); itr++)
{
if(isbnCodeReform[i] == 'X')
{
isbnCodeReform[i] = 10;
}

products[i] = isbnCodeReform[i] * (10 - i);
}

vector<int>::const_iterator itr;

for (itr = products.begin(); itr != products.end(); itr++)
{
sumOfProducts += products[*itr];
}

if ((sumOfProducts % 11) == 0)
{
validations.push_back(true);
}
else
{
validations.push_back(false);
}
}
}

void printValidations(const list<Isbn> listOfIsbn,
const list<bool> validations)
{
list<Isbn>::const_iterator itr;
list<bool>::const_iterator itr2 = validations.begin();

for(itr = listOfIsbn.begin(); itr != listOfIsbn.end(); itr++)
{
string validate = bToS(*itr2);
Isbn isbn = *itr;
cout << isbn.getIsbn() + ": " + validate + "\n";
itr2++;
}
}

string bToS(const bool bValue)
{
if(bValue == 0)
{
return "False";
}
else
{
return "True";
}
}

如有任何帮助,我们将不胜感激!

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