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

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [C++] Renombrar char [SOLUCIONADO]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [C++] Renombrar char [SOLUCIONADO]  (Leído 3,715 veces)
DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
[C++] Renombrar char [SOLUCIONADO]
« en: 15 Mayo 2015, 17:06 pm »

Buenas,

Tengo un problema al renombrar una variable char, acá el código:

Código
  1. string buscarNombre;
  2.  
  3. cout << "Introduce el nombre a buscar: ";
  4. cin >> buscarNombre;
  5.  
  6. char *datname = "archivos/vid.txt";
  7.  
  8. *datname = buscarNombre;
  9.  
  10. ifstream fe(datname);


Y esta es la línea que me salta error:

Código
  1. *datname = buscarNombre;

He probado de varias maneras ya, pero no me deja renombrar a la variable o si no me salta error en el ifstream.

Si pueden echarme una mano lo agradecería.

Saludos.


« Última modificación: 15 Mayo 2015, 22:25 pm por YuseTist » En línea

Esta página web no está disponible - Google Chrome
x64core


Desconectado Desconectado

Mensajes: 1.908


Ver Perfil
Re: [C++] Renombrar char
« Respuesta #1 en: 15 Mayo 2015, 18:51 pm »

"buscarNombre" es un objeto y "datname" es un puntero a caracter/cadena, datname  apunta a una cadena constante y no debe ser modificada, mejor crea un buffer en el que puedas escribir, para leer la cadena del objeto podes hacer:

char var_char;
var_char = buscarNombre.c_str()[ x ];



En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Renombrar char
« Respuesta #2 en: 15 Mayo 2015, 19:04 pm »

esa línea tendría que ser
Código
  1. datname = buscarNombre.c_str();
para poder funcionar

el operador c_str() de la clase std::string devuelve un "const char*"

se debería modificar el tipo de datname también, a const char*

Código
  1.  #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.   string buscarNombre;
  9.  
  10.    cout << "Introduce el nombre a buscar: ";
  11.    cin >> buscarNombre;
  12.  
  13.    const char *datname = "archivos/vid.txt";
  14.  
  15.    datname = buscarNombre.c_str();
  16. }  
« Última modificación: 15 Mayo 2015, 19:07 pm por Stakewinner00 » En línea

DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
Re: [C++] Renombrar char
« Respuesta #3 en: 15 Mayo 2015, 21:13 pm »

Gracias,

Ahora me gustaría saber como sobre-escribir la constante.

Tengo esto:

Código
  1. datname = "archivos/" + buscarNombre.c_str();

Pero me salta error, no me deja ejecutarlo.
En línea

Esta página web no está disponible - Google Chrome
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Renombrar char
« Respuesta #4 en: 15 Mayo 2015, 21:34 pm »

puedes hacer
Código:
buscarNombre = "archivos/" + buscarNombre;
datname = buscarNombre.c_str();


un char* es un array de chars, el cual no tiene definido el operador de suma "+", por eso da error.
En línea

DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
Re: [C++] Renombrar char
« Respuesta #5 en: 15 Mayo 2015, 21:58 pm »

puedes hacer
Código:
buscarNombre = "archivos/" + buscarNombre;
datname = buscarNombre.c_str();


un char* es un array de chars, el cual no tiene definido el operador de suma "+", por eso da error.


Gracias,

Ahora tengo una duda con verificar si el archivo existe o no, estoy probando con esto:

Código
  1. ifstream fe(datname);
  2. if(fe.good()){
  3. // Se muestra el contenido
  4. }
  5. else{
  6. cout << "El archivo no ha sido encontrado." << endl;
  7. }

Pero no da ningún resultado, y si lo modifico de distintas formas me salta el error.

A poder ser me gustaría que me explicaras por encima como funciona el código que me escribiste ayer al ayudarme:

Código
  1. ifstream fe(datname);
  2.    while(!fe.eof())
  3.    {
  4.        char c = fe.get();
  5.        str += c;
  6.  
  7. if(c == '\n') {
  8.            cout << str;
  9.            str = "";
  10.        }
  11.    }

Saludos.
En línea

Esta página web no está disponible - Google Chrome
Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: [C++] Renombrar char
« Respuesta #6 en: 15 Mayo 2015, 22:17 pm »

Muchas de esas dudas sobre mimebros de algunos objetos lo puedes encontrar en http://en.cppreference.com/w/ la primera duda acerca de si el fichero esta abierto se puede encontrar buscando en esa web.

Si la duda que tienes es que hace fe.get(), eso lo puedes encontrar en ese link también.
En línea

DeMoNcRaZy


Desconectado Desconectado

Mensajes: 420


$~*|_


Ver Perfil
Re: [C++] Renombrar char
« Respuesta #7 en: 15 Mayo 2015, 22:25 pm »

Gracias por la ayuda.

Solucionado.
En línea

Esta página web no está disponible - Google Chrome
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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