@YungJabo

Почему выводится ошибка при записи символов в строку temp?

Я ищу подстроку в тексте. Если эта строка мне подходит, то я посимвольно переношу из текста слово в переменную temp. Но в определенный момент там какие-то проблемы с памятью, строка не хочет записывать новые символы в какой-то момент с ошибкой out of range. Почему вылетает эта ошибка, почему я не могу записать посимвольно в string?

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main() {
	vector<string>a;
	string text;
	string sub;
	cout << "Enter text: " << endl;
	getline(cin, text);
	cout << "Enter subtext: " << endl;
	getline(cin, sub);
	string temp = " ";
	int flag;
	cout << text.length();
	for (int i = 0; i < text.length(); i++)
	{
		flag = 1;
		if (text[i] != ' ' && text[i] != ',' && text[i] != '.' && text[i] != '!' && text[i] != '?' && text[i] != '_' && text[i] != '-') {
			temp[i] = text[i];
		}
		else {
			for (int j = 0; j < sub.length(); j++)
			{
				if (temp[j] != sub[j]) {
					temp = " ";
					break;
				}
				else {
					flag = 0;
				}
			}
		}
		if (flag == 0) {
			a.push_back(temp);
			temp = " ";
		}
		

	}

	for (int j = 0; j < sub.length(); j++)
	{
		if (temp[j] != sub[j]) {
			temp = " ";
			break;
		}
		else {
			flag = 0;
		}
	}
	if (flag == 0) {
		a.push_back(temp);
		temp = " ";
	}
	



}


temp[i] = text[i]; - здесь ошибка при четвертой итерации, при входных данных:
ee Aa
A
  • Вопрос задан
  • 41 просмотр
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
temp - строка, изначально длины 1. Не вижу, чтобы вы где-то увеличивали размер контейнера. Там происходит выход за границу массива и рано или поздно оно падает.

Вам надо, чтобы temp был размером не меньше text.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы