Je suis en train de concaténer deux chaînes en une nouvelle (finalString) comme ceci: finalString = string1 + « & » + chaîne2C++ allocation dynamique des valeurs initiales
Tout d'abord, j'allouent la mémoire pour finalString, puis J'utilise strcat(). Je suppose que string1 est "Mixt" et string2 est "Supermarket".
La sortie ressemble à ceci:
═════════════════řřřř //(which has 21 characters)
═════════════════řřřřMixt&Supermarket
Je sais que si je l'utilise entre parenthèses dans « nouveau char » la chaîne sera initialisé à 0 et je vais obtenir le résultat souhaité, mais ma question est pourquoi la première sortie a-t-elle 21 caractères, en supposant que j'ai alloué seulement 17. Et même ainsi, pourquoi la longueur de chaîne finale dépasse-t-elle la taille d'allocation initiale (21> 17)?
Merci d'avance!
Une raison pour laquelle vous ne pouvez pas utiliser ['std :: string'] (http://en.cppreference.com/w/cpp/string/basic_string)? –
'finalString' commence non initialisé, il s'agit donc d'un comportement indéfini. Vous devez définir le premier élément sur 0 (par exemple 'finalString [0] = 0;') –
Vous avez tort lorsque vous dites "la chaîne sera initialisée à 0". – Barmar