Comment convertir un boost :: ptime en chaîne
Je vais avoir du mal à convertir un ptime objet de stimuler en une chaîne de caractères à être passé à une fonction. J'ai trouvé plusieurs autres threads en ce qui concerne outputing un coup de pouce moment s'opposer à une chaîne (surtout pour le cout) mais rien de ce que j'ai trouvé sur leur travail.
Il semble que le plus simple est d'insérer le ptime objet dans un stringstream, puis en utilisant les stringstream de la chaîne. J'ai également tenté d'insuffler à la stringstream avec un time_facet, que certaines des réponses sur d'autres threads suggèrent. Cependant, je suis incapable de créer un time_facet objet. Il me donne l'erreur que l'argument de la liste pour le modèle de classe est manquant. Ce qui est déroutant, c'est le nulle part sur internet je n'ai trouvé aucune mention d'une liste d'arguments pour time_facet, et même stimuler la page de documentation montre que le constructeur par défaut pour un time_facet est simplement time_facet().
Ci-dessous est une version simple de ce que j'ai essayé:
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/date_time/posix_time/posix_time_io.hpp>
boost::posix_time::ptime time = boost::posix_time::time_from_string("1981-08-20 08:05:00");
std::stringstream sstream;
sstream << time;
_updateStatement->setString(1, (sql::SQLString)sstream.str());
L'insertion de temps dans les stringstream me donne un tas d'erreurs de compilation dans la veine de
error C2220: warning treated as error - no 'object' file generated C:\code\trunk\Development\External\boost\include\boost/date_time/time_facet.hpp(247) :while compiling class template member function 'boost::date_time::time_facet<time_type,CharT>::time_facet(size_t)'
with
[
time_type=boost::posix_time::ptime,
CharT=char
]
malgré le fait que je n'ai pas utilisé tout time_facet objets.
Quand j'essaie de le faire avec un time_facet objet, je l'ai ajouter dans
sstream.imbue(std::locale(sstream.getloc(), new boost::date_time::time_facet("%Y-%m-%d %H:%M:%S")));
avant de l'insérer à la fois dans les stringstream. L'erreur sur ce qu'il veut d'une liste d'arguments comme déjà mentionné au début de ce post.
Est là peut-être une fonction boost qui est l'inverse de boost::posix_time::time_from_string()? Si pas, de toute autre aide serait appréciée. Merci.
source d'informationauteur user3517209
Vous devez vous connecter pour publier un commentaire.
Le Coup De Pouce.Date_Time bibliothèque fournit les suivantes
ptime
àstd::string
conversions dans leboost::posix_time
espace de noms:std::string to_simple_string(ptime)
retourne une chaîne de caractères sous la forme deYYYY-mmm-DD HH:MM:SS.fffffffff
format oùmmm
est les trois personnage nom du mois.std::string to_iso_string(ptime)
retourne une chaîne de caractères sous la forme deYYYYMMDDTHHMMSS,fffffffff
oùT
est la date-séparateur de temps.std::string to_iso_extended_string(ptime)
retourne une chaîne de caractères sous la forme deYYYY-MM-DDTHH:MM:SS,fffffffff
oùT
est la date-séparateur de temps.En outre, les flux d'insertion et d'extraction les opérateurs sont fournies, ce qui
ptime
à insérer ou d'extraire à partir d'un flux. Les formats d'entrée /sortie peuvent être personnalisés par la construction de facettes avec divers format de drapeauxpuis d'imprégner les flux avec la facette.Basée sur l'erreur de compilation (
C2220
), le compilateur est défini pour traiter tous les avertissements comme des erreurs. Dans certains cas, les bibliothèques Boost de compiler avec des avertissements. Examiner l'évaluation de la gravité réelle de l'avertissement, de manutention et de manière appropriée à partir de là. Par exemple, si l'avertissement est trivial, il peut être acceptable d'utiliser un pragma d'avertissement de désactiver ou de supprimer l'avertissement spécifique.Ici est un exemple complet démontrant la conversion
ptime
à une chaîne par l'intermédiaire de son fourni des fonctions de conversion et de flux opérateurs.Qui produit la sortie suivante:
Mon utilisation l'utilisation de la libération de 1,55
Résultats: