2010-10-07 23 views
2

Récemment, j'ai écrit une famille de fonctions pour rogner les espaces avant et arrière d'une chaîne d'entrée. Comme le concept de "espace" est dépendant des paramètres régionaux, je me suis rendu compte que je devrais passer soit une référence const std::ctype<char_t> ou une référence et appeler std::use_facet<std::ctype<char_t> > sur l'objet .Pour les fonctions sensibles aux paramètres régionaux, est-il plus courant de transmettre le paramètre std :: locale ou le ou les objets facettes nécessaires?

Dans ma bibliothèque, j'ai décidé à passer une référence const std::locale parce que je pensais que l'objet std::locale encapsulé l'ensemble des informations locales, et que le mécanisme std::use_facet était spécifique à la bibliothèque d'accès. Cependant, j'ai alors commencé à me demander si cela pourrait être un meilleur choix (peut-être plus commun?) De passer la référence const std::ctype<char_t> pour une utilisation directe par les fonctions.

Ce qui est plus commun dans les bibliothèques sensibles aux paramètres régionaux: transmettre la référence const std::locale ou const-références aux facettes nécessaires?

Répondre

2

Voyant comment isspace() de la bibliothèque standard est réellement std::isspace(charT, const std::locale&), je pense qu'il suivrait le principe de la moindre surprise si vos fonctions d'espace blanc trim ont également pris const locale&.

Mais qu'est-ce qui vous empêche d'autoriser les deux?