Subclassing string class

R

Ray

Hi all,

I am thinking of subclassing the standard string class so I can do
something like:

mystring str;
....
str.toLower ();

A quick search on this newsgroup has found messages by others
suggesting that subclassing a standard class is a bad idea, especially
for beginners...

Can someone suggest what is the recommended way to add functionality
to (say) the string class? Actually, I would like to do other things
to strings, and toLower is just one of them. Is it better or is the
only way to just perform a function call:

toLower (string s)

[Of course, there is a C function with the same name, so something
similar to it.]

Another way is to create a class with a private member variable "data"
of type string I should add that I'm somewhat motivated by efficiency
as these tasks with strings will be performed very often.

Which of these two is recommended? Or is there a third that I have
not thought of?

Thank you!

Ray
 
C

Christian Hackl

Ray said:
Can someone suggest what is the recommended way to add functionality
to (say) the string class? Actually, I would like to do other things
to strings, and toLower is just one of them.

Why not use the String Algorithms library in Boost?
http://www.boost.org/doc/libs/1_35_0/doc/html/string_algo.html

It may already offer most of the functionality you need, including case
conversion algorithms.

std::string source = "FooBar";
boost::algorithm::to_lower(source);
std::cout << source; //prints "foobar"

Note how the library does *not* derive from std::string but uses
non-member functions that take std::string parameters.
 
R

Ray

Hi Victor/Alf,

Thank you both for your replies. Actually, I had gotten a little
further than what I posted and stumbled on exactly what you two are
now discussing...

I derived a class mystring (sorry, I won't say "subclass" :) ) from
string and was trying to do:

mystring foo
....
foo.length ();

I didn't think about casting...but I thought somehow that should have
worked. Obviously, not... Thanks for the two suggestions and the
pros/cons of each!

Ray
 
R

Ray

Hi Christian,

Thanks for this -- I didn't know that the Boost library had string
algorithms. I should have thought that something like "tolower" would
be there. I think I'll take this option; I'm obviously too new to
continue going down the current path. :) Thank you!

Ray
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,483
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top