@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
  • Вопрос задан
  • 38 просмотров
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
temp - строка, изначально длины 1. Не вижу, чтобы вы где-то увеличивали размер контейнера. Там происходит выход за границу массива и рано или поздно оно падает.

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

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

Войти через центр авторизации
Похожие вопросы