Rozmiar wektora większy niż powinien

0

Witam!
Mam taki problem: Wczytuje kolejno litery z textBoxa do ciągu char* a dalej do wektora, az do napotkania znaku ":". Wygląda to mniej więcej tak:

	char*  pole =(char*)System::Runtime::InteropServices::Marshal:: StringToHGlobalAnsi( textBox45->Text).ToPointer();
int z = 0;
while ((int)pole[z] != 58)
			{
				etykieta.push_back(pole[z]);
				z++;
			} 
 

W dalszym ciągu programu ten wektor "etykieta: przepisuje do char*

int size = etykieta.capacity();
et = new char [size];
for (int s = 0;s<size;j++)
	{
		et[s] = etykieta[s];s++;
	} 

no i wlasnie w pierwszej linii jest pies pogrzebany, bo załóżmy, że napis z "pole" brzmi
"jakisnapis:"
to napis et brzmi
"jakisnapisÍÍÍÍÍýýýý««««««««ţîţîţîţ"
i nie mogę dalej porównywać tego napisu z dalszymi elementami tekstu etc.
Co robię źle? Proszę o pomoc.

1
for (int s = 0;s<size;j++)

Tu nie powinno być ++s? (albo s++, jeśli tak wolisz - chociaż raczej powinieneś używać pierwszej formy, skoro nie potrzebujesz post-inkrementacji)

et = new char [size];
for (int s = 0;s<size;j++)
        {
                et[s] = etykieta[s];s++;
        } 

Zapomniałeś o dodaniu terminatora (nie, nie chodzi mi o robota z przyszłości, który został gubernatorem stanu Kalifornia - ale o znak'\0') na koniec c-stringa.

0

Dzięki wielkie!
Problem rozwiązany ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1