Comme ceci:
std::string str = oss.str();
LPCSTR cstr = str.c_str();
Notez que vous ne cstr
reste valable jusqu'à la prochaine modification de str
. Ainsi, vous ne pouvez pas, par exemple, renvoyer cstr
à partir d'une fonction car str
est une variable locale qui a quitté la portée.
Au lieu de renvoyer LPCSTR
à partir de cette fonction, renvoyez std::string
. Cela évite de traiter des problèmes de durée de vie si vous avez renvoyé LPCSTR
. Si vous avez renvoyé LPCSTR
, vous devrez allouer de la mémoire et vous assurer que vous l'avez libérée. Exactement le genre de chose que vous ne voulez pas faire dans le code C++. Par conséquent, renvoyez std::string
et appelez c_str()
sur cet objet à l'endroit où vous appelez la fonction Windows API.
Le retour était exactement ce que j'avais l'intention de faire, alors comment pourrais-je faire cela? –
Ne fais pas ça. Il vous laissera avec toutes sortes de maux de tête à vie. Renvoyez un 'std :: string' et appelez' c_str() 'sur ce point là où vous devez appeler la fonction winapi. –
Renvoyer une référence à un local ne va pas se terminer correctement. Ne distribuez pas de vaches mortes (ou d'objets en général). – IInspectable