bonjou, j'ai un petit problème avec mon essai de classe de formattage de chaine; j'essaye de faire la chose suivante
le probleme c'est que format<> qui contient ici la chaîne est un temporaire qui sera détruit après l'opération, et donc f pointe potentiellement sur du caca. Je me demande si vous avez des idées brillantes pour corriger ce problème; le but serait de réussir a prolonger la vie de la chaîne pour qu'elle aie le scope de la fonction...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int main(void) { const char *f = format<>("int value : %d\n") & 12; printf("%s\n", f); return 0; }
la classe format :
l'opérateur & a peu d'importance
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 template< size_t SIZE = 512 > class format { typedef char ARRAY[SIZE]; public: ARRAY m_format; char *m_pattern; public: void findFormat() { while(m_pattern && *m_pattern && (m_pattern[1] == '%' || m_pattern[0] != '%')) m_pattern++; if(m_pattern && !*m_pattern) m_pattern = 0; } public: format(const char *f) { strncpy(m_format, f, SIZE); m_pattern = m_format; findFormat(); } ~format() { //*m_format = 0; } operator const char*() { return m_format; } };
des idées brillantes ?
Partager