[vc++] std::string i Access Violation

0

Cześć. Mam sobie prostą funkcyjkę:

bool FindTags(char* text, int &start, int &end)
{
	std::string stext = text;
	start = stext.find(std::string("[delphi]"));
	end = stext.find(std::string("[/delphi]"));
	if (start == -1 || end == -1) return false;
	return true;
}

I jak ją wywołam za pierwszym razem to pięknie śmiga. Jednak przy drugim wywołaniu wywala Access Violation w momencie przypisywania text do stext. Jak to naprawić i dlaczego tak się dzieje?

0

Pokaz, co robisz pomiedzy wywolaniami, moze gubi sie 0 z napisu

0

Droga wskaźnika wygląda mniej więcej tak:

int MessageEvent(cMessage* msg)
{
[...]
		NewMsg.body = Highlight(msg->body);
[...]
}

char* Highlight(char* msg)
{
	std::string out;
	int start, end;
	/* Sprawdzamy czy w tekście są tagi [delphi][/delphi] */
	if (FindTags(msg,start,end) == false) return msg;
[...]
}

int FindTags(char* text, int &start, int &end)
{
	std::string *stext = new std::string(text);
	start = stext->find(std::string("[delphi]"));
	end = stext->find(std::string("[/delphi]"));
	if (start == -1 || end == -1) return 0;
	return 1;
}

Spróbuję dodać jeszcze \0 na końcu i powiadomię o wynikach :) \ 0 się nie gubi - to nie to

// Dodam jeszcze, że błąd wyskakuje tylko w przypadku gdy funkcja FindTags zwraca 1.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.