Non riesco a convertire un oggetto ptime da boost in una stringa da passare a una funzione. Ho trovato molti altri thread simili per quanto riguarda l'output di un oggetto boost time su una stringa (principalmente per cout) ma nessuno di quello che ho trovato su di essi funziona.Come convertire un boost :: ptime in stringa
Sembra che il modo più semplice sia inserire l'oggetto ptime in un stringstream e quindi utilizzare la stringa di stringstream. Ho anche tentato di incorporare lo stringstream con un time_facet, come suggeriscono alcune risposte su altri thread. Tuttavia, non riesco a creare un oggetto time_facet. Mi dà l'errore che manca l'elenco degli argomenti per il modello di classe. Ciò che confonde è il nulla su Internet ho trovato alcuna menzione di un elenco di argomenti per time_facet, e anche la pagina di documentazione di boost mostra che il costruttore predefinito per un time_facet è semplicemente time_facet().
Qui di seguito è una versione semplice di quello che ho provato:
#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'inserimento del tempo in stringstream mi dà un sacco di errori di compilazione in vena di
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
]
nonostante il fatto che non ho usato alcun oggetto time_facet.
Quando cerco di fare questo con un oggetto time_facet, aggiungo in
sstream.imbue(std::locale(sstream.getloc(), new boost::date_time::time_facet("%Y-%m-%d %H:%M:%S")));
prima di inserire l'ora nel stringstream. Gli errori per questo sono che vuole un elenco di argomenti come menzionato all'inizio di questo post.
C'è forse una funzione in boost che è il contrario di boost :: posix_time :: time_from_string()? In caso contrario, qualsiasi altro aiuto sarebbe apprezzato. Grazie.
Sì, il nostro progetto è impostato a considerare tutte le avvertenze come errori. Mentre non sono ancora sicuro del motivo per cui inserire il tempo in uno stream e perché la creazione di time_facets non funziona nel mio progetto (a meno che questi non diano sempre degli avvertimenti), le funzioni di conversione del tempo in stringa sembrano fare il trucco per me. Grazie mille! – user3517209
C'è un modo per aggiungere una "Z" alla fine del tempo? Ho provato "% Y-% m-% dT% H% M% SZ", ma sto ottenendo solo "AAAA-mm-ggTHH: MM: SS" e nessuna Z alla fine – sop