2009-01-01 9 views

Répondre

10

CString offre la méthode Format pour le formatage printf, mais ce n'est pas sécurisé.

Pour chaîne de type sécurisé mise en forme, vous pouvez soit utiliser std::stringstream/std::wstringstream ou la bibliothèque Boost Format, bien que ceux-ci travaillent tous les deux avec le modèle de classe std::basic_string C++, et non la classe MFC CString. J'ai utilisé ces deux éléments avec succès dans VC6.

Boost Format est sympa car il vous permet d'utiliser la syntaxe printf, et lèvera une exception si les arguments que vous fournissez ne correspondent pas à la chaîne de format, alors que la mise en forme de chaînes avec C++ iostreams rendra votre code assez verbeux .

Notez que vous pouvez créer un objet à partir d'une CStringstd::string comme suit:

std::string s; 
CString str(s.c_str()); 

J'espère que cela aide!

+0

puis-je utiliser cela avec VC6 – yesraaj

+0

std :: string et std :: stringstream sont les deux éléments de la bibliothèque standard. Si vous avez besoin de variantes de caractères larges, utilisez std :: basic_string et std :: basic_stringstream . Donc: oui, VC6 conforme. – xtofl

+0

Oui, ceux-ci fonctionnent avec VC6. J'ai mis à jour ma réponse. – ChrisN

1

Check out FastFormat. Il a une syntaxe facile, et un "sink" - terminologie FastFormat pour la chose qui reçoit le résultat de l'opération de formatage - pour CString.

Quelque chose le long des lignes de:

int i = 1; 
std::string ss = "a std string"; 
CString cs = "a Cstring"; 

CString result; 

fastformat::fmt(result, "i={0}, ss={1}, cs={2}", i, ss, cs);