J'ai une variable de classe privée char name[10]
à laquelle je voudrais ajouter l' .txt
extension afin que je puisse ouvrir le fichier présent dans le répertoire.
Comment dois-je procéder?
Il serait préférable de créer une nouvelle variable de chaîne contenant la chaîne concaténée.
Puisqu'il s'agit de C ++, pourquoi ne pas l'utiliser à la
std::string
place dechar*
? La concaténation sera triviale:la source
operator+=
effectue à la fois une désallocation et une allocation. Les allocations de tas font partie des opérations les plus coûteuses que nous effectuons couramment.Si vous programmiez en C, en supposant
name
qu'il s'agit vraiment d'un tableau de longueur fixe comme vous le dites, vous devez faire quelque chose comme ceci:Vous voyez maintenant pourquoi tout le monde recommande
std::string
?la source
Il existe une fonction strcat () de la bibliothèque C portée qui effectuera la concaténation "chaîne de style C" pour vous.
BTW même si C ++ a un tas de fonctions pour traiter les chaînes de style C, il pourrait être avantageux pour vous d'essayer de créer votre propre fonction qui fait cela, quelque chose comme:
...puis...
... dont le résultat est
file_name.txt
.Vous pourriez également être tenté d'écrire le vôtre,
operator +
mais les surcharges d'opérateur IIRC avec uniquement des pointeurs car les arguments ne sont pas autorisés.N'oubliez pas non plus que le résultat dans ce cas est alloué dynamiquement, vous pouvez donc appeler delete dessus pour éviter les fuites de mémoire, ou vous pouvez modifier la fonction pour utiliser le tableau de caractères alloué par pile, à condition bien sûr qu'il ait une longueur suffisante.
la source
strncat()
fonction qui est généralement une meilleure alternativestrncat
n'est pas pertinent ici, car nous connaissons déjà la longueur du deuxième paramètre".txt"
. Donc ce serait justestrncat(name, ".txt", 4)
, ce qui ne nous rapporte rien.strcat (destination, source) peut être utilisé pour concaténer deux chaînes en c ++.
Pour avoir une compréhension approfondie, vous pouvez rechercher dans le lien suivant-
http://www.cplusplus.com/reference/cstring/strcat/
la source
Il est préférable d'utiliser la classe de chaînes C ++ au lieu de l'ancienne chaîne de style C, la vie serait beaucoup plus facile.
si vous avez une chaîne de style ancien existante, vous pouvez convertir en classe de chaîne
la source
C ++ 14
Réponse à la question:
la source
la source