Je veux convertir une fois_t à une chaîne et à nouveau.
de 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). P>
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. STRUT>
de
Une note de plus, cela devra fonctionner sur Windows XP et ci-dessus et c'est tout. P>
Edit h1>
4 Réponses :
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:
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.
Le Time_t Wikipedia Article Article jette une lumière sur ceci. La première ligne est que le type de Essayez time_t code> n'est pas garanti dans la spécification C. Voici un exemple de ce que vous pouvez essayer: Stringstream code>. P> #include <boost/lexical_cast.hpp>
#include <string>
time_t t;
time(&t);
std::string ts = boost::lexical_cast<std::string>(seconds);
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 () code> pour convertir le retour sur std :: string time.c_str () code>.
ctime () code> renvoie un pointeur sur un tampon de caractère qui utilise une formatage spécifique. Vous pouvez utiliser sprintf () code> pour analyser une telle chaîne dans ses portions individuelles, stockez-les dans un struct TM code> et utilisez mktime () code> à Convertissez-le en un TIME_T CODE>. P>
Convertir Time_T en structure TM en utilisant gmtime () , puis Convertissez la structure TM en texte brut (de préférence le format ISO 8601) en utilisant Strftime () a>. Le résultat sera portable, lisible par l'homme et lisible par machine. P>
Pour revenir à la TIME_T, vous faites simplement l'analyse de la chaîne dans une structure TM et utilisez mktime () . p>
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.