This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: g++/stl bug?


>  char *onepart=(char*)one.substr(1,1).data();

Hi,

First you should use c_str() instead of data(). data() might well return
you a non-null terminated string or a bunch of trash - c_str() is the
correct function to use, and you won't need to cast the pointer. Have a
read at http://www.sgi.com/tech/stl/ for more informations about the
string class. I think this should be enough to solve your problem.

> PS: I am using g++ version 2.96. OS: Redhat 7.2
> On using g++3 it is says "string undeclared"!

gcc 3.0 is much more demanding about the standardness of your C++ code.
The string class belongs to the std namespace in ansi C++. While gcc
2.96 used std as the "root" namespace (or at least seems to), gcc 3.0
doesn't. To make your program compile under gcc 3.0, use "std::string"
instead of "string", or add a "using std::string" or "using namespace
std" (latter not recommanded) before using any string. Bruce Eckel has a
great chapter about namespaces and their use in his Thinking in C++ book
- it is available freely on the web at
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html and is truly a
perl, I can only recommand it if you want a great intermediate book
about standard C++.

Hope this help!
Alex.
-- 
http://www.gnurou.org


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]