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