ho bisogno di una funzione che prenda in input un char* contenente un indirizzo ipv4 (192.168.27.35) e un vettore di quattro char* in cui inserire i quattro ottetti (192, 168, 27 e 35)

il comportamento di strtok è alquanto strano, in quanto modifica l'argomento che gli viene passato: non posso quindi usare strtok con il mio buffer di ingresso (toSplit), ma devo prima effettuarne una copia (tempBuffer) e quindi passare quest'ultima a strtok

il problema si crea quando cancella l'oggetto dinamico appena creato

codice:
void splitCharIpAddress (char* toSplit, char* splitted[4])
{
	char* tempBuffer = new char[strlen (toSplit) + 1];
	strcpy (tempBuffer, toSplit);

	splitted[0] = strtok (tempBuffer, ".");
	for (int i = 1; i < 4; i++)
		splitted[i] = strtok (NULL, ".");

	for (int i = 0; i < 4; i++)
		cout << splitted[i] << " ";
	cout << endl;

	delete tempBuffer;

	for (int i = 0; i < 4; i++)
			cout << splitted[i] << " ";
}
da come output

codice:
192 168 0 1 
 168 0 1
ovvero il contenuto di splitted[0] viene perso non appena cancello tempBuffer.

è sicuramente un errore del cavolo, ma ci sto smattando da due ore e non ragiono con lucidità

qualcuno mi aiuta?