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

 

 


Tema destacado: Guía actualizada para evitar que un ransomware ataque tu empresa


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda c_str() en ejemplo libro Prata
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda c_str() en ejemplo libro Prata  (Leído 3,784 veces)
skan


Desconectado Desconectado

Mensajes: 1.360


Ver Perfil
Duda c_str() en ejemplo libro Prata
« en: 13 Agosto 2013, 15:59 pm »

Hola

Estaba leyendome el libro C++ Primer Plus 6th de Prata para refrescar un poco mi C++ y tengo una duda sobre un ejemplo sobre I/O de archivos.
En la página 1117 hay un ejemplo en el que entre otras cosas escriben esto:

Código:
string filename;
cout << "Enter filename";
cin >> filename;
ofstream fout(filename.c_str());
y dice que se usa c_str() para pasar el nombre, que es un string, como parámetro...


En la página 1121 en otro ejemplo se usa

Código:
fin.open(argv[number]);   

¿Por qué no se usa también el  .c_str() en este caso?

saludos


En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda c_str() en ejemplo libro Prata
« Respuesta #1 en: 13 Agosto 2013, 16:02 pm »

Hola skan en ese caso no utiliza .c_str()  porque le pasa como argumento el parámetro o los parámetros que se le pasan al programa por consola.


En línea

Regístrate en
skan


Desconectado Desconectado

Mensajes: 1.360


Ver Perfil
Re: Duda c_str() en ejemplo libro Prata
« Respuesta #2 en: 13 Agosto 2013, 16:06 pm »

Hola
Sí, pero ese argv[numero] es como un puntero a un  "string", ¿no?
En línea

avesudra


Desconectado Desconectado

Mensajes: 724


Intentando ser mejor cada día :)


Ver Perfil
Re: Duda c_str() en ejemplo libro Prata
« Respuesta #3 en: 13 Agosto 2013, 16:11 pm »

A un string no, es un puntero a un char vamos lo que retorna contiene es (char*) la dirección de una cadena, que será el parámetro ubicado en la posición numero.


« Última modificación: 13 Agosto 2013, 16:13 pm por avesudra » En línea

Regístrate en
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda c_str() en ejemplo libro Prata
« Respuesta #4 en: 13 Agosto 2013, 16:17 pm »

.c_str() es una funcion de la clase string para convertir los strings a cadenas char* clasicas.

El ARGV es una cadena char* clasica, lo mismo que poner el nombre entre comillas:
Código
  1. ofstream fout("Un archivo.txt");
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
skan


Desconectado Desconectado

Mensajes: 1.360


Ver Perfil
Re: Duda c_str() en ejemplo libro Prata
« Respuesta #5 en: 13 Agosto 2013, 21:51 pm »

Es que me extraña que de el mismo modo no se pueda escribir
Código:
string filename;
cout << "Enter filename";
cin >> filename;
ofstream fout(filename);

sin usar el c_str(), simplemente cogiendo el string como input.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda c_str() en ejemplo libro Prata
« Respuesta #6 en: 13 Agosto 2013, 21:55 pm »

Explico mejor.

Una cadena char*, no son mas que los caracteres puestos en fila. Ahí no hay problema alguno.

Un string, es un contenedor/objeto para facilitar el trabajo con cadenas de caracteres. Este objeto tiene sus datos, sus funciones y sus operaciones... No es una cadena de caracteres propiamente dicha.

Su funcion .c_str() obtiene del string un texto leible y entendible.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: Duda c_str() en ejemplo libro Prata
« Respuesta #7 en: 14 Agosto 2013, 18:14 pm »

Lo normal para funciones de la librería estándar que requieran una cadena de caracteres es que acepten un objeto de la clase string, sin embargo los constructores de las clases para I/O no lo han hecho hasta el más reciente estándar de C++, el 11.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con un ejemplo simple en Perl
Scripting
skan 3 2,851 Último mensaje 19 Mayo 2010, 13:08 pm
por skan
Duda en Ejemplo
ASM
Binary_Death 6 4,137 Último mensaje 15 Julio 2010, 22:42 pm
por ño_ño
programcion web con CGI (c++ ejemplo) y duda
Programación C/C++
bash 3 3,841 Último mensaje 16 Julio 2010, 14:10 pm
por Horricreu
Duda sobre un libro
Hacking
a4n4f4z 5 3,182 Último mensaje 14 Agosto 2011, 22:10 pm
por Slava_TZD
Duda con ejemplo del libro k&r
Programación C/C++
fruz 3 1,956 Último mensaje 21 Abril 2019, 23:51 pm
por Serapis
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines