[C con Clase] Pasar string directamente a una función

d1cor cordobadie en gmail.com
Jue Feb 20 20:21:04 CET 2014


Yo no tengo ningun problema al compilar y ejecutar la llamada usando un argumento tipo string con el siguiente código:

#include <iostream>
#include <string>
using namespace std;
void foo(const string texto)
{
    cout << texto << endl;
}
int main()
{
foo("hola");
return 0;
 }


----
y la compilación (a.cpp es el fuente):

die en tuta2:/tmp$ g++ a.cpp
die en tuta2:/tmp$ ./a.out 
hola

die en tuta2:/tmp$ g++ --version
g++ (Debian 4.8.2-1) 4.8.2
Copyright (C) 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

No será otro el problema? Resulta raro el error.

Slds a todos!
-- 
Ing. Diego Cordoba
Instructor/Consultor GNU/Linux
LPI Linux Certified Professional
Site: www.d1cor.com.ar


On Thu, 20 Feb 2014 16:27:58 +0100
User <usuarioanonimomysql en gmail.com> wrote:

> No, es un requerimiento usar string y no un puntero a char.
> 
> 
> El 20 de febrero de 2014, 14:00, Joel Martín Prada García <
> joel.prada en gmail.com> escribió:
> 
> > Buenos días, Utilice un apuntador a caracter en la declaración de la
> > función, así:
> >
> > #include <iostream>
> > #include <string>
> >
> > using namespace std;
> >
> > void foo(char *texto)
> > {
> > printf("%s",texto);
> > }
> >
> > int main()
> > {
> > foo("hola");
> > return 0;
> > }
> >
> >
> >
> > El 20 de febrero de 2014, 2:35, User
> > <usuarioanonimomysql en gmail.com>escribió:
> >
> >> Hola,
> >>
> >> Tengo una función que recibe un parámetro de tipo std::string,
> >> cuando trato de llamar a esa función pasando directamente un
> >> string el compilador me da un error diciendo que no existe una
> >> función tal que reciba lo que le estoy pasando.
> >>
> >> Es algo así:
> >>
> >> #include <iostream>
> >> #include <string>
> >>
> >> using namespace std;
> >>
> >> void foo(const string &texto)
> >> {
> >> }
> >>
> >> int main()
> >> {
> >>   foo("hola");
> >>   return 0;
> >> }
> >>
> >> También he probado a llamarlo así:
> >>
> >> foo(string("hola"));
> >>
> >> con el mismo resultado.
> >>
> >> Utilizo g++ para compilar. No me gustaría tener que recurrir a
> >> crear variables de tipo string para llamar a foo. ¿Alguna idea de
> >> qué puede ser?
> >>
> >> Saludos.
> >>
> >> _______________________________________________
> >> Lista de correo Cconclase Cconclase en listas.conclase.net
> >> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> >> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >>
> >
> >
> > _______________________________________________
> > Lista de correo Cconclase Cconclase en listas.conclase.net
> > http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> > Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
> >







Más información sobre la lista de distribución Cconclase