Comment convertir std :: string en LPCSTR tout en préservant les caractères '\ 0'?convertir std :: string en LPCSTR avec '0' final ou '0'
Je veux utiliser le résultat sur OPENFILENAME.lpstrFilter qui nécessite que le filtre contienne '\ 0' comme délimiteurs.
std :: string.c_str() semble dépouiller et couper '\ 0'
Merci à l'avance!
==========================
(Comment puis-je ajouter correctement un commentaire aux réponses comme un message de réponse dans ? un forum)
Après avoir lu vos commentaires, je suis allé à vérifier cet extrait:
std::string filter = "Terrain Configuration (*.tcfg)\0*.tcfg\0\0";
const char* f1 = "Terrain Configuration (*.tcfg)\0*.tcfg\0\0";
const char* f2 = filter.c_str();
for(int i = 0; i < 50; i++)
{
char c1 = *(f1 + i); // works
char c2 = *(f2 + i); // doesn't work. beyond the first \0, it's garbage.
}
que je me trompe sur la façon dont c_str() ou travaux LPCSTR?
Affichez http://msdn.microsoft.com/en-us/library/ ms646839% 28VS.85% 29.aspx: 'lpstrFilter: La dernière chaîne de la mémoire tampon doit être terminée par deux caractères NULL. Vous avez besoin de ** deux ** caractères NULL à la fin pour que ce paramètre fonctionne correctement; 'c_str()' par sa conception n'en a qu'un. – AshleysBrain
Oui, je le sais. – Jake