Problems casting a const char* to char*

Please support our C++ advertiser: Intel Parallel Studio Home
Reply

Join Date: Jul 2005
Posts: 11
Reputation: ramcfloyn is an unknown quantity at this point 
Solved Threads: 0
ramcfloyn ramcfloyn is offline Offline
Newbie Poster

Problems casting a const char* to char*

 
0
  #1
Jul 25th, 2005
I am currently writing a C++ program that uses a external library and engine that is primarily based in C. I am attempting to load an image file and the function requires that the argument be passed as a char *szFileName.

I have the file address as a string and my attempt to convert is as follows:

std::string path("C:\\Doc.....")
then char *FileExt = path.c_str();

I continually get the error message saying that it is not possible to convert const char * to char *!

Any1 any ideas? Any help would be much appreciated!

oh and by the way ive tried casting it using static_cast
Reply With Quote Quick reply to this message  
Join Date: Sep 2004
Posts: 7,567
Reputation: Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute Narue has a reputation beyond repute 
Solved Threads: 706
Team Colleague
Narue's Avatar
Narue Narue is offline Offline
Code Goddess

Re: Problems casting a const char* to char*

 
0
  #2
Jul 25th, 2005
The c_str() method of the std::string class returns a pointer to const char so that you can't modify the result. Unfortunately, there's no good solution, and you can thank the author of the library who didn't write const-correct code. Now, if you know that the function will not modify the string, you can use const_cast to allow the conversion:
  1. char *FileExt = const_cast<char*> ( path.c_str() );
If you're not sure whether the function will modify the string or not, you have no choice but to create a C-style string copy:
  1. char *FileExt = new char[path.size() + 1];
  2. std::strcpy ( FileExt, path.c_str() );
strcpy is declared in <cstring>.

>oh and by the way ive tried casting it using static_cast
static_cast doesn't remove qualifiers, which is a very good thing because you have to actively choose const_cast, and therefore can't do it by accident.
I'm here to prove you wrong.
Reply With Quote Quick reply to this message  
Join Date: Jul 2005
Posts: 11
Reputation: ramcfloyn is an unknown quantity at this point 
Solved Threads: 0
ramcfloyn ramcfloyn is offline Offline
Newbie Poster

Re: Problems casting a const char* to char*

 
0
  #3
Jul 25th, 2005
Thanks very much that seems do have done the trick! Won't know for sure though until i'm back in tomorrow!

Cheers though It's a great help cause that was the sticking point.
Reply With Quote Quick reply to this message  
Reply

This thread is more than three months old.
Perhaps start a new thread instead?
Message:


Thread Tools Search this Thread



About Us | Contact Us | Advertise | DaniWeb | Acceptable Use Policy | RSS Feed

©2003 - 2009 DaniWeb® LLC