Conversión (transferencia) de cadena, char *, char [] en C ++

1. Cadena a char *

  Hay tres formas principales de convertir str a tipos char *, a saber: data (); c_str (); copy ();

  1. El método data (), como:  

string str = " hello " ;
 const  char * p = str.data (); // Agregar const o usar char * p = (char *) str.data ();

  Al mismo tiempo, hay un punto que debe explicarse aquí: compilar en devc ++ necesita agregar const, de lo contrario, informará una conversión no válida de const char * a char *, donde puede agregar const al frente o forzar la conversión a char * después del signo igual.

  A continuación se explica el problema. Const char * no se puede asignar directamente a char *, por lo que la compilación no se aprobará. Razón: si es posible, entonces el contenido señalado por const char se puede modificar a través de char *, lo que no está permitido. Por lo tanto, char * necesita abrir un nuevo espacio, es decir, la forma anterior.

  

  2.c_str () método, como:

string str = "world";
 const  char * p = str.c_str (); // Igual que el anterior, agregue const o signo igual a la derecha con char *

 

  3. El método copy (), como:

string str = " hmmm " ;
 char p [ 50 ]; 
str.copy (p, 5 , 0 ); // Aquí 5 representa la copia de varios caracteres, 0 representa la posición de copia, 
* (p + 5 ) = '\ 0 ' ; // ¡ Presta atención para agregar manualmente el terminador! ! !

 

Segundo, char * a la cadena.

  Se puede asignar directamente.

cadena s;
 char * p = " hola " ; // asignación directa 
s = p;

    Una cosa a tener en cuenta aquí es que cuando se declara la variable de cadena s, usar printf ("% s", s) causará un error, porque "% s" requiere la primera dirección del siguiente objeto. Pero la cadena no es de ese tipo. Entonces debe estar equivocado.

  

Tres, cadena a char []

  Como conocemos la longitud de la cadena, se puede obtener de acuerdo con la función length (), y se puede acceder directamente de acuerdo con el subíndice, por lo que se puede asignar con un bucle.

cadena pp = " dagah " ;
char p [ 8 ];
int i;
para (i = 0 ; i <pp.length (); i ++ ) 
       p [i] = pp [i]; 
p [i] = ' \ 0 ' ; 
printf ( " % s \ n " , p); 
cout << p;

 

Cuatro, char [] para encadenar

  Aquí puede asignar directamente.

 

Dirección original: https://www.cnblogs.com/Pillar/p/4206452.html

  Hay tres formas principales de convertir str a tipos char *, a saber: data (); c_str (); copy ();

  1. El método data (), como:  

string str = " hello " ;
 const  char * p = str.data (); // Agregar const o usar char * p = (char *) str.data ();

  Al mismo tiempo, hay un punto que debe explicarse aquí: compilar en devc ++ necesita agregar const, de lo contrario, informará una conversión no válida de const char * a char *, donde puede agregar const al frente o forzar la conversión a char * después del signo igual.

  A continuación se explica el problema. Const char * no se puede asignar directamente a char *, por lo que la compilación no se aprobará. Razón: si es posible, entonces el contenido señalado por const char se puede modificar a través de char *, lo que no está permitido. Por lo tanto, char * necesita abrir un nuevo espacio, es decir, la forma anterior.

  

  2.c_str () método, como:

string str = "world";
 const  char * p = str.c_str (); // Igual que el anterior, agregue const o signo igual a la derecha con char *

 

  3. El método copy (), como:

string str = " hmmm " ;
 char p [ 50 ]; 
str.copy (p, 5 , 0 ); // Aquí 5 representa la copia de varios caracteres, 0 representa la posición de copia, 
* (p + 5 ) = '\ 0 ' ; // ¡ Presta atención para agregar manualmente el terminador! ! !

 

Segundo, char * a la cadena.

  Se puede asignar directamente.

cadena s;
 char * p = " hola " ; // asignación directa 
s = p;

    Una cosa a tener en cuenta aquí es que cuando se declara la variable de cadena s, usar printf ("% s", s) causará un error, porque "% s" requiere la primera dirección del siguiente objeto. Pero la cadena no es de ese tipo. Entonces debe estar equivocado.

  

Tres, cadena a char []

  Como conocemos la longitud de la cadena, se puede obtener de acuerdo con la función length (), y se puede acceder directamente de acuerdo con el subíndice, por lo que se puede asignar con un bucle.

cadena pp = " dagah " ;
char p [ 8 ];
int i;
para (i = 0 ; i <pp.length (); i ++ ) 
       p [i] = pp [i]; 
p [i] = ' \ 0 ' ; 
printf ( " % s \ n " , p); 
cout << p;

 

Cuatro, char [] para encadenar

  Aquí puede asignar directamente.

 

Dirección original: https://www.cnblogs.com/Pillar/p/4206452.html

Supongo que te gusta

Origin www.cnblogs.com/kerwincui/p/12730497.html
Recomendado
Clasificación