Je veux écrire une enveloppe pratique pour une fonction de style C strftime . Et j'ai trouvé quelques options pour convertir un tableau de caractères en chaîne de caractères et vice-versa. Voici mon code :
std::string Time::getAsFormattedString ( const std::string& format , const size_t& maxStringSize = 999 )
{
char* timeArray = 0;
std::string timeString;
// [OPTION_0]
timeArray = reinterpret_cast <char*> (malloc(sizeof(char)*maxStringSize)));
// [OPTION_1]
timeArray = const_cast <char*> (timeString.c_str());
// [OPTION_2]
timeArray = &(*(timeString.begin()));
strftime(timeArray,maxStringSize,format.c_str(),&this->time);
timeString = timeArray;
// [OPTION_0]
free(timeArray);
return timeString;
}
L'option 0 semble sûre car aucune exception ne peut être levée avant la libération de la mémoire (Edit : timeString = timeArray
peut en lancer un, try-catch nécessaire autour de cette ligne)
1 le const-casting ressemble toujours à un hack
2 semble être le meilleur par je ne sais pas si il pourrait y avoir des problèmes avec elle
Pouvez-vous me dire, s'il vous plaît, laquelle est la plus sûre, la plus correcte, la plus optimale et peut-être une sorte de meilleure pratique.
Merci.