Я новичок в C++ и Microsoft Visual Studio, и в настоящее время я работаю над лабораторией для своего класса структур данных, я закончил свой код, но когда я создаю и запускаю свою программу, она выдает эту ошибку:
std::bad_alloc at memory location 0x0018C9C0.
Я погуглил эту ошибку и обнаружил, что эта ошибка возникает, если для программы недостаточно памяти или программа пытается выделить для чего-то бесконечное количество памяти. Я пытался выделить больше памяти в свойствах программы, но это, похоже, не помогло. Просматривая свой код, я не могу найти ничего, что могло бы вызвать эту ошибку. Вот мой код для справки:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
int main() {
string line;
string value;
string linesArray[200];
int i = 0;
int j = 0;
int finalLine = 158;
getline(cin, line, '\n');
getline(cin, line, '\n');
/* First Line */
for (i; i < finalLine; ++i) {
getline(cin, line, '\n');
for (j; j <= 24; ++j) {
if (j = 0) {
line = line.replace(line.find(','), line.find_first_of(','), string(30 - line.find(','), ' '));
}
line = line.replace(line.find(','), line.find_first_of(','), string(20 - line.find(','), ' '));
}
linesArray[i] = value;
cout << linesArray[i] << endl;
}
return 0;
}
Я попытался создать указатель, чтобы найти адрес, который он показывает в ошибке, но не смог его найти. Любая помощь приветствуется.
РЕДАКТИРОВАТЬ: извините, что я не ясно выразился, мой ввод представляет собой текстовый файл в формате csv. Я беру информацию и в первом столбце каждой строки ставлю 30 пробелов минус длина значения, а в остальных значениях ставлю 20 пробелов минус длина значения, если нет значения, в котором я поместите ноль с 19 пробелами.
Пример ввода:
Albania,14,29365,43301,,,,,,,13,27867,41066,,,,,,,1,1498,2235,,,
if (j = 0)
это явно неправильно. Возможно, вы имели в видуif (j == 0)
- person Ari0nhh   schedule 08.09.2016find(',')
делаете что-то разумное (в вашем случае оно должно быть меньше, чемj == 0 ? 30 : 20
, иначе оно потеряет значение и выделит огромную строку вstd::string(20 - line.find(','))
и т. д. Чтобы сделать ваш пример полным, вам нужно добавить пример ввода к вашей программе. - person BeyelerStudios   schedule 08.09.2016