[C++] Renombrar char [SOLUCIONADO]

Iniciado por DeMoNcRaZy, 15 Mayo 2015, 17:06 PM

0 Miembros y 2 Visitantes están viendo este tema.

DeMoNcRaZy

Buenas,

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

Código (cpp) [Seleccionar]
string buscarNombre;

cout << "Introduce el nombre a buscar: ";
cin >> buscarNombre;

char *datname = "archivos/vid.txt";

*datname = buscarNombre;

ifstream fe(datname);



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

Código (cpp) [Seleccionar]
*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.
Esta página web no está disponible - Google Chrome

x64core

"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 ];


Stakewinner00

#2
esa línea tendría que ser
Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
 #include <iostream>
#include <string>

using namespace std;

int main()
{
  string buscarNombre;

   cout << "Introduce el nombre a buscar: ";
   cin >> buscarNombre;

   const char *datname = "archivos/vid.txt";

   datname = buscarNombre.c_str();
}  

DeMoNcRaZy

Gracias,

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

Tengo esto:

Código (cpp) [Seleccionar]
datname = "archivos/" + buscarNombre.c_str();

Pero me salta error, no me deja ejecutarlo.
Esta página web no está disponible - Google Chrome

Stakewinner00

puedes hacer

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.

DeMoNcRaZy

Cita de: Stakewinner00 en 15 Mayo 2015, 21:34 PM
puedes hacer

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 (cpp) [Seleccionar]
ifstream fe(datname);
if(fe.good()){
// Se muestra el contenido
}
else{
cout << "El archivo no ha sido encontrado." << endl;
}


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 (cpp) [Seleccionar]
ifstream fe(datname);
    while(!fe.eof())
    {
        char c = fe.get();
        str += c;
       
if(c == '\n') {
            cout << str;
            str = "";
        }
    }


Saludos.
Esta página web no está disponible - Google Chrome

Stakewinner00

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.

DeMoNcRaZy

Gracias por la ayuda.

Solucionado.
Esta página web no está disponible - Google Chrome