Existe-t-il une meilleure alternative pour faire du formatage de chaîne dans VC6, avec la vérification de la syntaxe avant la substitution?Alternative à CString :: Format?
Répondre
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 CString
std::string
comme suit:
std::string s;
CString str(s.c_str());
J'espère que cela aide!
FormatString - smart string formatting
Ivo Beltchev
Posté le CodeProject
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);
- 1. Devrais-je lancer un CString passé à Format/printf (et varargs en général)?
- 2. erreur Lien CString
- 3. CString longueur maximale
- 4. caractères d'échappement dans un CString
- 5. Alternative à getElementsByTagName
- 6. VCL alternative à IStorage
- 7. alternative à l'instruction
- 8. Alternative gratuite à RegexBuddy
- 9. Alternative à fgets()?
- 10. Assez alternative à JProgressBar?
- 11. Alternative à String.Replace
- 12. Microsoft alternative à Jabber?
- 13. ASP.NET Alternative à Shorty
- 14. Alternative à Flex Framework
- 15. Alternative à Singleton
- 16. Alternative à INotifyCollectionChanged
- 17. Alternative à Geneva Framework
- 18. Comment convertir cstring en NSString?
- 19. fonction alternative à document.getElementById() setAttribute()
- 20. Alternative à MySQL CASE/WHEN?
- 21. Alternative à JUnit dans Android
- 22. mfc copier certaines sections d'un CString
- 23. Comment marshaler cstring * via P/Invoke?
- 24. CString extrait le chemin du fichier
- 25. GoogleMock - Matchers et MFC \ ATL CString
- 26. Conversion de MFC CString en entier
- 27. ColdFusion.navigate alternative?
- 28. PDFTK Alternative
- 29. Alternative à GetProcessID pour Windows 2000
- 30. Alternative à Complex.h dans Visual Studio
puis-je utiliser cela avec VC6 – yesraaj
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
Oui, ceux-ci fonctionnent avec VC6. J'ai mis à jour ma réponse. – ChrisN