Cómo convertir una cadena en una matriz de caracteres

Dos cuestiones

Primero, para responder el último punto de los detalles de la pregunta

sample input- This is string
Salida que obtuve

La cadena de entrada es: el número total de caracteres en la cadena de entrada es: 4

¿Por qué está pasando esto?

Porque solo has leído una cadena de 4 caracteres de la entrada estándar. Usaste este código para leer:

entrada de cadena;
std :: cin >> input;

Y esto lee una palabra separada por espacios en blanco, no una línea. Dada la entrada de “This is string”, esta línea de código colocó “This” en la cadena “input”, y dejó “is string” en la secuencia de entrada, aún sin leer.

Si desea leer una línea, use getline:

entrada de cadena;
getline (std :: cin, input);

Segundo: no tiene sentido hacer una matriz que contenga el contenido de su cadena porque una cadena ya es una matriz (soluciona otros problemas menores como la falta de encabezado y la salida aparentemente faltante en el bucle al final),

#include
#include
int main () {
std :: cout << "Ingrese cualquier cadena-";
std :: entrada de cadena;
getline (std :: cin, input);
std :: cout << "\ nLa cadena de entrada es-";
int cuenta = 0;
for (char * array_point = & input [0]; * array_point! = ‘\ 0’; array_point ++) {
std :: cout << * array_point;
recuento ++;
}
std :: cout << "\ nEl número total de caracteres en la cadena de entrada es-" << cuenta << '\ n';
};

demostración en vivo [Wandbox] 三 へ (へ՞ ਊ՞) へ ハ ッ ハ ッ

(por supuesto, ese bucle es bastante tonto, dado que las cadenas tienen todo tipo de accesores convenientes:

para (char ch: input) {
std :: cout << ch;
}
std :: cout << "\ nEl número total de caracteres en la cadena de entrada es-" << input.size () << '\ n';

Cambié un poco tu código y coloqué algunos comentarios. Asegúrate de leer esos comentarios
Si solo desea saber cómo convertir un objeto de cadena en una matriz de caracteres de estilo c, entonces string.c_str () es lo correcto.

#include
// Encabezado de cadena para la clase de cadena c ++
#include

// Encabezado de cadena que conoces en c
#include

usando std :: string;

int main () {

std :: cout << "Ingrese cualquier cadena-";

entrada de cadena;

// std :: cin >> input;
// Tomando entrada como línea, no solo cadena delimitada por espacios
getline (std :: cin, input);

std :: cout << std :: endl;

char string_array [100];

strcpy (string_array, input.c_str ());

// usando for loop para comprobar qué demonios está pasando

// for (string_array [i];) Esta línea es un error de sintaxis (¿Por qué demonios está aquí?)
char * array_point;
int cuenta = 0;

std :: cout << "La cadena de entrada es-";

for (array_point = string_array; * array_point! = ‘\ 0’; array_point ++) {
std :: cout << * array_point; // Olvidaste mostrar el puntero de caracteres
// valor que estabas desreferenciando
recuento ++;
}
std :: cout << std :: endl << "El número total de caracteres en la cadena de entrada es-" << cuenta;

devuelve 0;
};

Java Code para convertir String a Character Array

/ *
* Código Java para convertir String a matriz de caracteres
* /
public char [] stringToCharArray (String string) {
/ * Declarado una matriz de caracteres de longitud de cadena * /
conjunto de caracteres [] = nuevo carácter [string.length ()];
/ * iterar sobre la cadena un carácter a la vez * /
for (int i = 0; i / * asignar matriz * /
matriz [i] = string.charAt (i);
}
/* devolverlo */
matriz de retorno;
}

Cuando toma una entrada en la línea 7, está delimitada por espacio de forma predeterminada.
Entonces, cuando le das “This is string” como entrada, la variable [math] input [/ math] almacena solo “This”.
Use [math] getline [/ math] si desea que la oración completa se tome como entrada.

Además, en la línea 15 no está imprimiendo el personaje.