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

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Pasar cadena String a una variable Char en C++
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Pasar cadena String a una variable Char en C++  (Leído 2,509 veces)
RGT

Desconectado Desconectado

Mensajes: 33



Ver Perfil
Pasar cadena String a una variable Char en C++
« en: 6 Noviembre 2015, 13:38 pm »

Hola amigos,

Tengo esto:
Código:
string PalabraAdivinar = golf;

//Variable usada solamente para convertir la Palabra a Adivinar de String a Char y poder usar la función strcmp()
    char PalabraAdivinarChar[PalabraAdivinar.size()] = PalabraAdivinar;

//Uso de la función strcmp()
y = strcmp(PalabraAdivinarChar, Respuesta);

Debo pasar mi cadena String a Char para poder usar esta función y me compare si la Palabra a Adivinar ya es igual a la Respuesta, o sea, lo que ingresa el usuario. Para hacer esta comparacion hago uso de la funcion strcmp(), el cual solo trabaja con variables tipo Char.

La duda mia es, la variable Char esta bien declarada?, porque me da error en CodeBlocks.

Notar que hice esto:
PalabraAdivinarChar[PalabraAdivinar.size()]

no se me ocurrió otra forma de asignarle el tamaño que necesito jeje.

espero me ayuden chicos..


En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Pasar cadena String a una variable Char en C++
« Respuesta #1 en: 6 Noviembre 2015, 15:11 pm »

Si, está mal declarada. Cuando declaras un array al estilo C, no puedes usar variables para delimitar el tamaño. En todo caso, tendrías que hacer esto:

Código
  1. char *PalabraAdivinarChar = new char[PalabraAdivinar.size()];

Lo segundo, es que no puedes hacer esta asignación (no puedes asignar a un puntero char un objeto string):

Código
  1. PalabraAdivinarChar = PalabraAdivinar;

Tendrías que hacer esto:

Código
  1. const char *PalabraAdivinarChar = PalabraAdivinar.c_str();

Date cuenta de que no he creado un array (sería inútil), sino un puntero a una cadena.

Y lo tercero y último. Puedes comparar cadenas sin tener que usar esa función. En vez de eso, usa el método compare, de la clase std::string:

y = PalabraAdivinar.compare(Respuesta);

Si y vale 0, entonces las cadenas son iguales, y si es distinto de 0, es que no son iguales. Para ser más exacto, mira esta página:

http://www.cplusplus.com/reference/string/string/compare/


En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
RGT

Desconectado Desconectado

Mensajes: 33



Ver Perfil
Re: Pasar cadena String a una variable Char en C++
« Respuesta #2 en: 6 Noviembre 2015, 15:27 pm »

el metodo compare necesita que ambas cadenas sean strings, cierto?, o una de las dos cadenas puede ser tipo char?.
En línea

class_OpenGL


Desconectado Desconectado

Mensajes: 437

Si usas Direct3D, no eres mi amigo :P


Ver Perfil
Re: Pasar cadena String a una variable Char en C++
« Respuesta #3 en: 6 Noviembre 2015, 16:19 pm »

Esta es la función con sus diferentes sobrecargas:

Código
  1. int compare (const string& str) const noexcept;
  2. int compare (size_t pos, size_t len, const string& str) const;
  3. int compare (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen) const;
  4. int compare (const char* s) const;
  5. int compare (size_t pos, size_t len, const char* s) const;
  6. int compare (size_t pos, size_t len, const char* s, size_t n) const;

Las que te interesaría son:

Código
  1. int compare (const char* s) const;
  2. int compare (size_t pos, size_t len, const char* s) const;
  3. int compare (size_t pos, size_t len, const char* s, size_t n) const;

Argumentos (Copiado de la página de antes):

Código:
str
Another string object, used entirely (or partially) as the comparing string.
pos
Position of the first character in the compared string.
If this is greater than the string length, it throws out_of_range.
Note: The first character is denoted by a value of 0 (not 1).
len
Length of compared string (if the string is shorter, as many characters as possible).
A value of string::npos indicates all characters until the end of the string.
subpos, sublen
Same as pos and len above, but for the comparing string.
s
Pointer to an array of characters.
If argument n is specified (4), the first n characters in the array are used as the comparing string.
Otherwise (3), a null-terminated sequence is expected: the length of the sequence with the characters to use as comparing string is determined by the first occurrence of a null character.
n
Number of characters to compare.
En línea

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines