Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > C++ > Subclassing string class

Reply
Thread Tools

Subclassing string class

 
 
Ray
Guest
Posts: n/a
 
      07-15-2008

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



 
Reply With Quote
 
 
 
 
Christian Hackl
Guest
Posts: n/a
 
      07-15-2008
Ray wrote:

> 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...ring_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.


--
Christian Hackl
 
Reply With Quote
 
 
 
 
Ray
Guest
Posts: n/a
 
      07-16-2008

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



On Jul 16, 6:25 am, "Alf P. Steinbach" <(E-Mail Removed)> wrote:
> * Victor Bazarov:
> > Alf P. Steinbach wrote:
> >> * Victor Bazarov:

>
> > class M {};
> > void foo(M&);
> > class L { public: operator M&(); };

>
> > versus

>
> > class M { public: foo(); };
> > class L { public: operator M&(); };

>
> > With the former you can have

>
> > L l;
> > foo(l);

>
> > but with the latter you can't do

>
> > L l;
> > l.foo();

>
> Reference operators are bad 'uns generally, but for latter you could just
> static_cast<M&>(l).foo(), and even static_cast<M&>(L()).foo().
>
> But I think the above misses the point, by introducing that conversion to reference.

 
Reply With Quote
 
Ray
Guest
Posts: n/a
 
      07-16-2008

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



On Jul 16, 7:13 am, Christian Hackl <(E-Mail Removed)> wrote:
> Ray wrote:
> > 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...ring_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.
>
> --
> Christian Hackl


 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Subclassing std::string confusion? petertwocakes C++ 2 11-28-2009 01:03 PM
Tricky subclassing problem: Parent class method uses static value from child class don.hosek@gmail.com Perl Misc 0 09-26-2006 08:45 AM
Nested Class, Member Class, Inner Class, Local Class, Anonymous Class E11 Java 1 10-12-2005 03:34 PM
My Experiences Subclassing String Fuzzyman Python 2 06-08-2004 10:58 AM
Subclassing String in C Robin Becker Python 0 11-11-2003 12:36 AM



Advertisments