Con questa istruzione fai puntare ogni puntatore a buffer.Ma buffer è un' area di memoria unica.Per cui se tutti i puntatori puntano a buffer, tutti i puntatori puntano alla stessa stringa.Ergo se viene modificata tramite un puntatore, anche gli altri puntatori puntano alla stringa modificata.codice:path[i]=buffer;
L' operatore = funziona con std::string perché è definito per la suddetta classe, ma char* è un tipo primitivo, assegnandolo a un altro puntatore non sta facendo alcuna copia della stringa.
Usa le funzioni strcpy e strcmp (di cstring) per confrontare le stringhe in stile C.
Oppure usa un array di std::string che poi convertirai a char*.