Page 1 of 1

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

PostPosted: Thu Sep 13, 2012 1:37 pm
by erkosone
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..

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

PostPosted: Thu Sep 13, 2012 2:28 pm
by GINO
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...

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

PostPosted: Thu Sep 13, 2012 2:45 pm
by erkosone
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.

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

PostPosted: Thu Sep 13, 2012 2:49 pm
by GINO
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.

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

PostPosted: Thu Sep 13, 2012 2:55 pm
by erkosone
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.