char* namePtr = (char*) name.c_str();

You forgot () and that's why compiler treats c_str as function address
instead of the address returned by the function.


On 1/25/07, Adriano Crestani <[EMAIL PROTECTED]> wrote:

OK, but when I try to do it:

char* namePtr = (char*) name.c_str;

I get this error message:

Error    36    error C2440: 'type cast' : cannot convert from 'const char
*(__thiscall std::basic_string<_Elem,_Traits,_Ax>::* )(void) const' to
'char
*'

I suppose that isn't allowed to cast from const to not const type.

Adriano Crestani

On 1/25/07, Pete Robbins <[EMAIL PROTECTED]> wrote:
>
> That is the "belt and braces" approach but if it's a perfomance issue it
> would be OK to follow Yang's suggestion and jsut cast it to char*. Try
it
> and see if it works!
>
> On 25/01/07, Adriano Crestani <[EMAIL PROTECTED]> wrote:
> >
> > Thanks guys, you helped a lot. So I will copy the string to a char*
and
> > delete it after the usage. ; )
> >
> > Adriano Crestani
> >
> > On 1/25/07, Pete Robbins <[EMAIL PROTECTED]> wrote:
> > >
> > > On 25/01/07, Yang ZHONG <[EMAIL PROTECTED]> wrote:
> > > >
> > > > Not every API is designed extremely careful: quite some times
> "char*"
> > > > doesn't mean the implementation may change the memory.
> > > > I doubt SQLConnect change "char*", therefore you can safely cast
> from
> > > > "const
> > > > char*" to "char*"
> > >
> > >
> > > I agree. The API defines these as Input parameters so it SHOULD be
> safe
> > to
> > > just cast the const char* to SQLCHAR*
> > >
> > > but...
> > >
> > > On 1/25/07, Adriano Crestani <[EMAIL PROTECTED]> wrote:
> > > > >
> > > > > It's an ODBC function:
> > > > >
> > > > > SQLConnect       (
> > > > >               SQLHDBC           ConnectionHandle,       /* hdbc
*/
> > > > >               SQLCHAR           *ServerName,             /*
szDSN
> */
> > > > >               SQLSMALLINT       ServerNameLength,       /* cbDSN
> */
> > > > >               SQLCHAR           *UserName,               /*
szUID
> */
> > > > >               SQLSMALLINT       UserNameLength,         /* cbUID
> */
> > > > >               SQLCHAR           *Authentication,         /*
> > szAuthStr
> > > */
> > > > >               SQLSMALLINT       AuthenticationLength);
> > > > >
> > > > >
> > > > > I'm needing to turn the server name that is a string object
> > > > > into a char* to cast it to SQLCHAR* and I didn't find any other
> > > > > function that takes const SQLCHAR* instead of SQLCHAR*. Thanks
> again
> > ;
> > > )
> > > > >
> > > > >
> > > > > .
> > > > >
> > > > >
> > > > > On 1/25/07, Pete Robbins <[EMAIL PROTECTED]> wrote:
> > > > > >
> > > > > > OK. I have to ask.... what function are you calling that takes
a
> > > > char*?
> > > > > Is
> > > > > > there an equivalent that takes const char*?
> > > > > >
> > > > > > Cheers,
> > > > > >
> > > > > >
> > > > > > On 25/01/07, Adriano Crestani <[EMAIL PROTECTED]>
wrote:
> > > > > > >
> > > > > > > I'm trying to use a function that requires a char* not const
> as
> > a
> > > > > > > paremeter.
> > > > > > > I think strdup will help a lot, thanks ; )
> > > > > > >
> > > > > > > Adriano Crestani
> > > > > > >
> > > > > > > On 1/25/07, Pete Robbins <[EMAIL PROTECTED]> wrote:
> > > > > > > >
> > > > > > > > On 25/01/07, Adriano Crestani <[EMAIL PROTECTED]>
> > wrote:
> > > > > > > > > I'm begginer with C++ and I would like to know the best
> way
> > to
> > > > > > obtain
> > > > > > > a
> > > > > > > > > char* from a string object, for example:
> > > > > > > > >
> > > > > > > > > string name = "Alice";
> > > > > > > > > char* namePtr = (char*) string; // this is not possible
:
> (
> > > > > > > > >
> > > > > > > > > Obs.: I'm needing a char* and not a const char* pointer
> > > > > > > > >
> > > > > > > > > Thanks.
> > > > > > > > >
> > > > > > > > > Adriano Crestani
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > > std::string has a .c_str() method to return the const
char*
> > > > > > > > const char* namePtr = name.c_str();
> > > > > > > >
> > > > > > > > Why do you need char* and not const char*? You could cast
> the
> > > > value
> > > > > to
> > > > > > > > char* but it is const for a good reason... you should not
> use
> > c
> > > > > > > > functions to manipulate the characters in std:string!
> > > > > > > >
> > > > > > > > You can take a copy of the string using strdup.
> > > > > > > >
> > > > > > > > Cheers,
> > > > > > > >
> > > > > > > > --
> > > > > > > > Pete
> > > > > > > >
> > > > > > > >
> > > > >
> > ---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> > > > > > > > For additional commands, e-mail:
> > [EMAIL PROTECTED]
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > >
> > > > > > --
> > > > > > Pete
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > >
> > > > Yang ZHONG
> > > >
> > > >
> > >
> > >
> > > --
> > > Pete
> > >
> > >
> >
> >
>
>
> --
> Pete
>
>




--

Yang ZHONG

Reply via email to