Questo è solo perché è necessario utilizzare il metodo std::string::c_str()
.
Ma ciò comporta const_cast
nel caso specifico perché const char *
restituito da c_str()
non può essere assegnato ad un non costante LPSTR
.
std::string str = "something";
LPSTR s = const_cast<char *>(str.c_str());
Ma si deve essere sicuri che il corso della vita di str
sarà più lungo di quello di LPTSTR
variabile.
Un'altra menzione, se il codice viene compilato come conforme Unicode, quindi i tipi LPTSTR
e std::string
non sono compatibili. Dovresti usare invece std::wstring
.
Nota importante: Se si passa il puntatore risultante s
dall'alto ad una funzione che tenta di modificare i dati che punta a questo si tradurrà in un comportamento indefinito. L'unico modo per gestirlo correttamente è duplicare la stringa in un buffer non const (ad esempio tramite strdup
)
Come stanno provando la conversione? –