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..
Pregunta tonta de C++ de la clase 'string'
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
- GINO
- Posts: 2823
- Joined: Thu Jul 31, 2008 10:25 pm
- Contact:
Re: Pregunta tonta de C++ de la clase 'string'
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...
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...
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Pregunta tonta de C++ de la clase 'string'
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.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- GINO
- Posts: 2823
- Joined: Thu Jul 31, 2008 10:25 pm
- Contact:
Re: Pregunta tonta de C++ de la clase 'string'
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.
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: Pregunta tonta de C++ de la clase 'string'
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.
Gracias por la ayuda gino.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/