10
votes

Meilleur moyen de créer une chaîne C

J'utilise actuellement

char *thisvar = "stringcontenthere";


3 commentaires

Notez que cela devrait être Const Char * Thisvar = "StringContHere"; ( const ). Il existe une conversion implicite const -removing d'un littéral de chaîne sur char * , mais qui est obsolète et ne doit pas être utilisé.


Notez également que char * foo; définit une variable une variable (de type char * ) et char * foo = "bar"; / Code> Définit et initialise une variable. Une déclaration serait extern char * foo; . (Voir Stackoverflow.com/Questtions/1410563/1410632#1410632 pour sa définition et quelle est une déclaration.)


Vous devez préciser si vous êtes également intéressé par C ++, car la balise C ++ ne trouve aucun avis dans la question ni le sujet.


5 Réponses :


0
votes

est-ce C ou C ++? En C ++, vous devriez utiliser std :: chaîne code> :

std::string aString("stringcontenthere");


0 commentaires

1
votes
const char *thisvar="stringcontenthere";

2 commentaires

Il doit lire cecivar = "stringcontenthere" et il devrait être Const Char *


Alors doit être nommé const char * thisconst = "stringContHere"; SCNR;



1
votes

comme autre suggéré, et je veux "le faire" la méthode C ++ , utilisez un std :: string .

Si vous avez besoin d'un < Code> c-string , std :: string a une méthode qui donne un const char * .

Voici un exemple: xxx


0 commentaires

15
votes

en C, cela dépend de la manière dont vous utiliserez la chaîne:

  • nommé constante: votre char * str = "string"; méthode est ok (mais doit être Char Const * )
  • Données à transmettre à la sous-fonction, mais ne sera pas utilisée après que la fonction d'appel retourne:
    Char Str [] = "String";
  • Data qui seront utilisés après la fonction, il est déclaré dans les sorties: Char * str = STRUP ("String"); et assurez-vous qu'il obtient gratuit D éventuellement.

    Si cela ne la couvre pas, essayez d'ajouter plus de détails à votre réponse.


0 commentaires


1
votes

Cela dépend. Pour les chaînes codées ASCII, voir Paragraphes C et C ++. Pour les chaînes codées Unicode, voir le dernier paragraphe.

C: H2>

Comme David a souligné que cela dépend de la manière d'utiliser la chaîne en C: p>

  • comme une constante alors: const char s [] = "bonjour monde"; code> li>
  • En tant que chaîne contenant des données variables, alors: Char S [] = "Hello World"; Code> Li>
  • en tant que tableau de données char * données code>; L'initialisation doit alors être personnalisée. LI> ul>

    Veuillez noter en C Il y a toutes les chaînes null résilisées, cela signifie la définition de par exemple. char s [] = "foo"; code> comprend implicitement un caractère null code> à l'extrémité s [3] = '\ 0' code>. p>

    Veuillez noter la différence de sous-sile entre char * s code> et char s [] code> qui pourrait souvent se comporter de même mais parfois pas! (Voir est un nom de tableau un pointeur? ) Par exemple:

    char utf8String[] = u8"Hello World";
    


0 commentaires