elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  diferencia entre variables char y string en c++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: diferencia entre variables char y string en c++  (Leído 16,222 veces)
d91

Desconectado Desconectado

Mensajes: 165


Ver Perfil
diferencia entre variables char y string en c++
« en: 12 Mayo 2014, 03:48 am »

Un saludo a todos, estoy un poco confundido entre el uso de una variable tipo string y una variable tipo char, desde que empece en c++ cualquier cadena la he guardado en un arreglo tipo char, pero ultimamente estuve estudiando el uso del namespace y vi que puedo usar con esto una variable tipo string donde tambien guardo una cadena siempre con cin como que si fuera un entero y no con fgets que utilizo cuando es un arreglo tipo char lo que no se ahora cuando usar un string o un arreglo tipo char para guardar el nombre de una persona por ejemplo. Asimismo muchos ejemplos que he visto solo declaran using namespace std; y despues declaran string a;  pero me da error les dejo un codigo aunque no se si estoy implementando de manera correcta el uso de namespace y de string y si corre
Código
  1. #include <iostream>
  2. #include <cstring>
  3. #include <conio>
  4.  
  5. namespace std{
  6.   string a;
  7.   }
  8. using namespace std;
  9.  
  10. int main() {
  11. cout << "Introduciendo palabra: ";
  12. cin>>a; // veo que me guarda hasta donde encuentre un espacio en blanco
  13. //a = "d 91";
  14.  
  15. cout << "Mostrando lo que tiene a: "<<a;
  16. getch();
  17.  
  18. return 0;
  19. }


En línea

noele1995

Desconectado Desconectado

Mensajes: 137



Ver Perfil
Re: diferencia entre variables char y string en c++
« Respuesta #1 en: 12 Mayo 2014, 08:35 am »

El include que necesitas es <string> (<cstring> es libreria de c), estas mezclando librerias de c++ y c, entre otras cosas string es una clase, no tiene un tamaño fijo la cadena, se ira redimensionando segun le asignemos valores, tambien tiene funciones miembro como size() que nos devolvera su tamaño por ejemplo, se puede igualar o comparar a otro string directamente (sin funciones como strcmp o strcpy...) entre otras cosas.

Un saludo


En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: diferencia entre variables char y string en c++
« Respuesta #2 en: 12 Mayo 2014, 08:48 am »

C++ es un lenguaje orientado a objetos. Esto quiere decir que C++ permite la creación y uso de objetos para modelar y encapsular las diferentes funcionalidades de una aplicación.

Uno de estos objetos es la clase "string". La clase "string", simplificando, contiene internamente un puntero tipo char y un entero... algo así (escrito en C):

Código
  1. typedef struct
  2. {
  3.  char* puntero;
  4.  int longitud;
  5. }

Alrededor de este diseño, la clase "string" implementa una serie de funciones que facilitan enormemente el uso de cadenas de caracteres en una aplicación:

* Implementado el operador copia: hace innecesario el uso de la función strcpy

Código
  1. std::string cad1 = "abcd";
  2. std::string cad2;
  3.  
  4. // En vez de strcpy( cad1, cad2 );
  5. cad1 = cad2;

* Soporta iteradores: facilita su manipulación en bucles

* Gestiona memoria dinámica de forma interna: evita lagunas de memoria, buffer overflow, ...

* Implementa operaciones de búsqueda.

* Implementa operador comparación: permite comparar strings de forma más natural que C.

Código
  1. // En C++
  2. if ( cad1 == cad 2 )
  3.  
  4. // En C
  5. if ( strcmp( cad1, cad2 ) == 0 )

* Operadores de inserción: Permite componer cadenas de forma simple:

Código
  1. std::string cad;
  2.  
  3. cad << "Hola" << " " << "mundo";

Todas estas operaciones tienen su símil en un array de tipo char... pero hay que tener más cuidado al manipular un puntero a tipo char y, claro, no es lo mismo usar operadores que usar funciones.

Bueno, hasta aquí el comentario para desgranar un poco las diferencias entre la clase string y las cadenas tipo "char".

Las clases en C++, a diferencia de los tipos nativos ( int, char, char*, ... ), tienen un archivo de cabecera y una implementación. Para poder usar una clase necesitas, por tanto, incluir su archivo de cabecera en tu código. De otra forma el compilador no sabe cómo utilizar esa clase ( no conoce el tamaño que ocupa, necesario para hacer reservas en la pila, no conoce el formato ni la ubicación de las funciones, ... )

En el caso de la clase "string", tal y como te indicó noele1995, se encuentra en

Código
  1. #include <string>

Nota que los includes de la librería estándar de C++ no tienen ".h", es una diferencia básica entre C y C++.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Char[] != String « 1 2 »
Programación General
Hendrix 19 10,701 Último mensaje 22 Agosto 2011, 03:54 am
por someRandomCode
Diferencia de "peso" entre variables de MySQL
Bases de Datos
Skeletron 9 8,587 Último mensaje 10 Agosto 2009, 19:08 pm
por Skeletron
Diferencia entre variables predefinidas [Batch]
Scripting
Nilrac 1 4,504 Último mensaje 12 Agosto 2010, 22:33 pm
por leogtz
Problema con string, char, etc
Programación C/C++
GenR_18 2 1,948 Último mensaje 21 Septiembre 2013, 19:30 pm
por GenR_18
Convertir un string a char
Programación C/C++
nolasco281 4 4,880 Último mensaje 11 Marzo 2014, 03:07 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines