9
votes

C ++ Convertir Time_T en chaîne et retour à nouveau

Je veux convertir une fois_t à une chaîne et à nouveau. de
Je voudrais convertir le temps à une chaîne en utilisant ctime (). de
Je ne peux pas sembler trouver rien sur Google ou le fichier Time.h Dossier, des idées? de
Fondamentalement, ce que j'essaie de faire est de stocker une date dans un fichier, puis de le lire afin que je puisse l'utiliser comme une fois_t. de
aussi, pas de références de bibliothèque en dehors de STD, MFC. de
Une note de plus, cela devra fonctionner sur Windows XP et ci-dessus et c'est tout.

Edit

Tout ce que je veux faire est de convertir un temps_t en une chaîne (je m'en fiche si c'est lisible par l'homme), puis le reconverti sur une fois_t. J'essaie essentiellement de stocker le temps_t dans un fichier et de le lire à nouveau (mais je ne veux pas de code pour cela, car il y aura plus d'informations dans le fichier en plus d'une fois_t).


2 commentaires

Voulez-vous une chaîne lisible humaine, comme "2011-08-18 21:07:10"?


Je suis surpris que personne n'a rien sur 0 ici, ils étaient toutes de bonnes réponses.


4 Réponses :


16
votes

Vous devrez écrire votre propre fonction pour le faire. Ces fonctions convertissent tout type primitif (ou tout type qui surcharge l'opérateur << et / ou opérateur >>) à une chaîne, et vicefersa: xxx


4 commentaires

Ma réponse initiale n'était que la première phrase, je pense que les bowvotes sont avant la modification dans laquelle j'ai ajouté le code


Ah ok. Cela couvrira-t-il l'édition que j'ai posté ci-dessus?


@ kelton52: oui. Vous pouvez utiliser .C_STR () avec la chaîne générée si vous devez écrire dans un fichier binaire


Merci pour l'Awnser, cela a fonctionné très bien. Je devais faire un peu de convertir de Wchar_T à Chars, mais c'est ce que je reçois pour travailler sur le projet de quelqu'un d'autre: p. Quoi qu'il en soit, c'était simple et fonctionnait bien.



2
votes

Le Time_t Wikipedia Article Article jette une lumière sur ceci. La première ligne est que le type de time_t code> n'est pas garanti dans la spécification C. Voici un exemple de ce que vous pouvez essayer:

Essayez Stringstream code>. P>

#include <boost/lexical_cast.hpp>
#include <string>

time_t t;
time(&t);

std::string ts = boost::lexical_cast<std::string>(seconds);


4 commentaires

S'il vous plaît lire mon message. Le problème ne le convertit pas à une chaîne, il le convient, c'est là que je ne trouve aucune information.


@Kelton: Int à String est assez simple. Vous allez devoir développer vos exigences.


OK, tout ce dont j'ai vraiment besoin de faire, c'est convertir une fois_t dans n'importe quel type de chaîne, puis de retour. Je ne me soucie pas vraiment de la lecture humaine lisible, je veux juste la stocker dans un fichier.


@Kelton: Ensuite, utilisez atoi () pour convertir le retour sur std :: string time.c_str () .



3
votes

ctime () renvoie un pointeur sur un tampon de caractère qui utilise une formatage spécifique. Vous pouvez utiliser sprintf () pour analyser une telle chaîne dans ses portions individuelles, stockez-les dans un struct TM et utilisez mktime () à Convertissez-le en un TIME_T .


0 commentaires

2
votes

0 commentaires