Pregunta tonta de C++ de la clase 'string'

Todo aquello que no está relacionado con Gemix Studio ni con la programación DIV en general.

Pregunta tonta de C++ de la clase 'string'

Postby erkosone » Thu Sep 13, 2012 1:37 pm

tengo una función que me pide un puñetero const char* y como personalmente odio los char[] prefiero usar strings...

Esto que hago es correcto? me puede dar problemas al cambiar entre windows/linux/mac???

std::string pepe = "sample.wav";
const char* outfilename = pepe.c_str();

pregunta para alguien que sepa del tema cross plattform, eso se puede hacer en win/linux/mac? es que algunas funciones de escritura en disco me piden forzosamente un arreay de chars constante.. y lo estoy piruleando así en windows..
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Pregunta tonta de C++ de la clase 'string'

Postby GINO » Thu Sep 13, 2012 2:28 pm

Si el prototipo de la función es:
funcion(const char *)
puedes simplemente poner:
funcion(pepe.c_str())
ya que c_str() devuelve un const char*.
Pero tienes que tener ojo con el tema const porque según donde lo uses indica diferentes cosas (más aún en c++).
Por ejemplo, si el parámetro de la función es const char* no tienes porque pasarle un const char*, puedes pasarle un char* pero el const indica que el parametro es constante y por lo tanto no puede ser modificado dentro de la función. Si la variable que usas es const como en tu ejemplo, indica que no puedes modificar la variable. Es un lio ya, pero bueno...
User avatar
GINO
 
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm

Re: Pregunta tonta de C++ de la clase 'string'

Postby erkosone » Thu Sep 13, 2012 2:45 pm

mmm.. entiendo, es tener cuidado de no usarlo donde dentro de una función o método se modifique su valor, vale gracias por la info, esto lo imaginaba pero no estaba seguro de si podía usarlo alegremente.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.

Re: Pregunta tonta de C++ de la clase 'string'

Postby GINO » Thu Sep 13, 2012 2:49 pm

Si en la función se modifica el parámetro es porque el parámetro no es const. Si lo fuese y quieres modificarlo te daría error de compilación directamente.
User avatar
GINO
 
Posts: 2823
Joined: Thu Jul 31, 2008 10:25 pm

Re: Pregunta tonta de C++ de la clase 'string'

Postby erkosone » Thu Sep 13, 2012 2:55 pm

Ok, es que no se que me pasa que estoy todavía chapado al estilo Div en esto.. cuando veo un array de chars me tiembla el pulso XD..
Gracias por la ayuda gino.
User avatar
erkosone
 
Posts: 10654
Joined: Tue Feb 24, 2009 2:13 pm
Location: Barcelona.


Return to Offtopic

Who is online

Users browsing this forum: No registered users and 13 guests