Arreglos y String se manejan igual?..y Getchar()

Mi duda es si se puede manejar igual un arreglo y un dato de tipo string. Agradecería una explicación y un buen ejemplo... Gracias

La otra duda es para que y como se utiliza el getchar() Soy nuevo en C++

1 respuesta

Respuesta
1

Pues el manejo de arreglos y el manejo de string no es igual.

Un arreglo puede ser una cadena de caracteres por ejemplo:

char cadena[50]; //seria una cadena de longitud máxima 50
//Para asignar un valor a esta cadena usamos la funcion strcpy:
Strcpy(cadena,"esto es una cadena");

mientras que un dato tipo string no se define con una longitud máxima sino:

string cadena;
//para asignar un valor a una cadena tipo string:
cadena="esto es una cadena tipo string";
//Si quisieramos obtener el equivalente de string en cadena del tipo char[] podriamos
//usar la funcion c_str(); que quedaria así:
Cadena. C_str(); //así podriamos manejarla como una cadena normal (como un arreglo) pero solo 
//para lectura puesto que el valor que devuelve c_str() no se puede modificar.

aquí te dejo un poco de referencia: http://www.cplusplus.com/reference/string/string/

Y tu otra duda:

Getchar() es una función que espera a que se pulse una tecla y una vez pulsada, se muestra dicho carácter en la pantalla y a su vez el carácter pulsado es devuelto por la función; es decir: si yo quiero mostrar un menú y posteriormente esperar a que se pulse una tecla (que sera una de las opciones del menú) la función getchar() nos viene perfecta:

//... codigo para mostrar menu...
int opcion=getchar();
if(opcion=='a'){
    //Codigo para hacer las cosas que indique la opcion a).
}
else if(opcion=='b'){
    //.....
}
//.....

Y esto es todo, si sigues con dudas comunícamelo.

Están excelentes tus respuestas me han ayudado muchísimo, solo tengo una duda mas.

Como puedo utilizar el getchar() para ir guardando la letra que ingresa el usuario en un arreglo... Disculpa las molestias y gracias de nuevo.

Pues puedes hacer un bucle;

int i;
char cadena[50];
for(i=0;i<50;i++){
  cadena=getchar();
}

Eso sería básicamente pero claro, tienes que tener en cuenta que una cadena de caracteres debe ser finalizada con el carácter nulo:

Cadena='\0';

(esto se hace para que el ordenador sepa donde termina la cadena), es decir, aunque la cadena sea de 50 caracteres máximo nosotros podemos terminarla por ejemplo en la posicion 9, esto implicaría que en la posición 10 tendríamos que poner el carácter nulo.

Y también debes hacer que cuando el carácter introducido sea ENTER se termine el bucle... eso ya te lo dejo para que te las averigües je je

Suerte

El enviar la ultima respuesta se me han eliminado los corchetes... voy a reescribir el código:

int i;
char cadena[50];
for(i=0;i<50;i++){
  cadena=getchar();
}
cadena='\0';
int i;
char cadena[50];
for(i=0;i<50;i++){
  cadena=getchar();
}
cadena='\0';

Se volvio a eliminar... asique lo he mandado otra vez....

Vale ya se porque se eliminan, al poner entre corchetes una 'i' entiende que el texto se tiene que poner en cursiva... en fin utilizare otra letra...

int cont;
char cadena[50];
for(cont=0;cont<50;cont++){
  cadena[cont]=getchar();
}
cadena[cont]='\0';


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas