Il existe un strcat() de la bibliothèque C portée qui effectuera pour vous la concaténation de "chaînes de caractères de style C".
De plus, bien que le C++ dispose d'un grand nombre de fonctions pour traiter les chaînes de caractères de style C, il pourrait être bénéfique pour vous d'essayer de créer votre propre fonction, quelque chose du genre :
char * con(const char * first, const char * second) {
int l1 = 0, l2 = 0;
const char * f = first, * l = second;
// step 1 - find lengths (you can also use strlen)
while (*f++) ++l1;
while (*l++) ++l2;
char *result = new char[l1 + l2];
// then concatenate
for (int i = 0; i < l1; i++) result[i] = first[i];
for (int i = l1; i < l1 + l2; i++) result[i] = second[i - l1];
// finally, "cap" result with terminating null char
result[l1+l2] = '\0';
return result;
}
...et puis...
char s1[] = "file_name";
char *c = con(s1, ".txt");
... dont le résultat est file_name.txt
.
Vous pourriez également être tenté d'écrire votre propre operator +
cependant, IIRC les surcharges d'opérateurs avec seulement des pointeurs comme arguments ne sont pas autorisées.
De plus, n'oubliez pas que le résultat dans ce cas est alloué dynamiquement, donc vous pourriez vouloir appeler delete sur lui pour éviter les fuites de mémoire, ou vous pourriez modifier la fonction pour utiliser un tableau de caractères alloué par la pile, à condition bien sûr qu'il ait une longueur suffisante.