From: Martin Krischik <krischik@users.sourceforge.net>
Subject: Re: Ada Popularity: Comparison of Ada/Charles with C++ STL (and Perl)
Date: Wed, 29 Sep 2004 09:49:08 +0200
Date: 2004-09-29T09:49:08+02:00 [thread overview]
Message-ID: <3060085.UHp9MgIIe7@linux1.krischik.com> (raw)
In-Reply-To: cjcn5u$s37$2@atlantis.news.tpi.pl
Robert Kawulak wrote:
> Hi,
>
>>>> And just for the record: atio is a C function - you need the overhead
>>>> of convertion the std::strivalidto a char* and std::strstream seem
>>>> quite heavy
>>>> weight for just a simple task of convertion a string from and to an
>>>> int.
>>>
>>> Actually, the overhead of conversion is virtually none (at least in
>>> Stlport implementation). You just call std::string::c_str() which just
>>> returns a pointer to the data, and which is also inlined.
>>
>> From what I read about std::string strings do not need to be '\0'
>> terminated
>> and std::string::c_str() will add a terminator if needed. Thats unlike
>> std::string::data() which does not add a '\0'.
>
> Yup, you're absolutely right. But Stlport implementation always stores
> '\0' at the end, so std::string::c_str() boils down to returning a
> pointer. On the other hand, the GCC implementation writes terminating '\0'
> every time this function is called. However, this is still constant
> complexity and a little overhead contrary to what many people suspect -
> that converting std::string to char * requires copying whole the contents
> of the string to some temporary buffer.
But that means that the strings need "capacity () - size () >= 1" so that
there is allways one spare byte for the '\0'.
>> Well on the other side
>> std::string::c_str() is const.
>
> c_str() may modify the data even despite being const if the data is
> declared with mutable specifier. And that's how it's done in GCC.
I was thinking about "capacity () - size () == 0" - then c_str() would need
to resize. Doesn't happen in your implementation - but is this valid for
all.
>> This all leaves me wonder how actually works. And if I ever need to work
>> again if I had a Euro for every call where std::string::data() and
>> std::string::c_str() have been mixed up.
> At the beginning I was also confusing the two. But since I've read the
> documentation carefully, I always remember the difference... ;-)
>>> void f() {
>>>
>>> //instead of std::string::fromInt(int)
>>> oss MyOutputStream;
>>> MyOutputStream << i;
>>> MyString = MyOutputStream.str();
>>>
>>> //instead of std::string::toInt()
>>> iss MyInputStream;
>>> MyInputStream.str(MyString);
>>> MyInputStream >> i;
>>>
>>> } //f()
>>
>> Well, nice. But are you shure you don't leak memory here. I remember
>> there was something about ownership and the str() function.
> I don't know which place exactly you mean, but I'm pretty sure it all
> works as supossed. Strings, streams and all other objects of std library
> classes take care for their storage themselves - a user doesn't have to
> worry about this. Coud you be more specific?
I might me mistaken with the old strstream.
>>> //same things as one-liners:
>>
>> Please DON'T. This is comp.lang.ada after all. Three liners are quite OK.
> OK, I promise this won't happen anymore! ;-)
>> Not only that you can shoot yourself in the foot with C++ (You can do
>> that with Ada as well) but the weapon is allways loaded (that is, cannot
>> be unloaded), has no safety lever, and the trigger is allwas taut. And of
>> corse it is a snipers hair trigger going off at the slightest touch.
>>
>> So no matter how experienced you are, you are allways in danger of
>> shooting
>> your food of.
> I can't agree with that at all. In C++ there is almost always an
> alternative. You may use std::vector<> instead of arrays, std::auto_ptr<>
> instead of naked pointers etc. But still you have a choice - if you really
> need to have a total low-level control on your program, you may have it.
> Otherwise use higher abstraction-level utilities. What you say might be
> eventually true for C, but not for C++. And the difference between the two
> is enormous, unfortunately many people think C and C++ is the same...
Not quite true. I did have to make Ada::Range<class type, type First, type
Last> myself. Actually, I still have to make it. My Current implementation
is for the old standart (as in Ada::IntegerRange<int First, int Last>). C++
has protection against buffer overruns - but the new JPEC Viruses work
integer overurns.
And there is no:
typedef explicit int My_Int.
And that means that
typedef Ada :: Range <int, 1, 12> US_Hours;
typedef Ada :: Range <int, 1, 12> Month;
are the same for C++. But there are not in real live. And if I use:
class US_Hours Ada :: Range <int, 1, 12> {};
class Month Ada :: Range <int, 1, 12> {};
I loose the constructors. So there is still something to be improved.
With Regards
Martin
--
mailto://krischik@users.sourceforge.net
http://www.ada.krischik.com
next prev parent reply other threads:[~2004-09-29 7:49 UTC|newest]
Thread overview: 229+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-22 0:21 Ada Popularity: Comparison of Ada/Charles with C++ STL (and Perl) Kevin Cline
2004-09-22 2:16 ` Pylinius
2004-09-22 8:50 ` Björn Persson
2004-09-22 13:38 ` Benjamin Ketcham
2004-09-22 14:07 ` Hyman Rosen
2004-09-22 15:16 ` Cesar Rabak
2004-09-23 8:22 ` Kevin Cline
2004-09-23 10:52 ` Anders Wirzenius
2004-09-23 10:54 ` stephane richard
2004-09-23 11:17 ` Jean-Pierre Rosen
2004-09-23 11:47 ` Marius Amado Alves
2004-09-23 13:34 ` Anders Wirzenius
2004-09-23 16:53 ` Warren W. Gay VE3WWG
2004-09-23 18:30 ` Kevin Cline
2004-09-23 19:00 ` Marius Amado Alves
2004-09-24 6:04 ` [OT]Screen ergonomics, was " Anders Wirzenius
2004-09-26 7:22 ` Kevin Cline
2004-09-23 17:19 ` Cesar Rabak
2004-09-23 8:51 ` Kevin Cline
2004-09-23 11:01 ` Georg Bauhaus
2004-09-23 15:59 ` Matthew Heaney
2004-09-23 16:38 ` Kevin Cline
2004-09-24 2:47 ` Matthew Heaney
2004-09-24 13:43 ` Hyman Rosen
2004-09-24 17:47 ` Mark Lorenzen
2004-09-24 18:16 ` Matthew Heaney
2004-09-29 19:29 ` Mark Lorenzen
2004-09-29 22:44 ` Matthew Heaney
2004-09-25 14:09 ` Martin Krischik
2004-09-26 7:08 ` Kevin Cline
2004-09-26 15:13 ` Matthew Heaney
2004-09-23 19:10 ` jayessay
2004-09-23 21:13 ` Adam Ruth
2004-09-27 2:12 ` Keith H Duggar
2004-09-27 14:21 ` Adam Ruth
2004-09-27 14:51 ` Chris Humphries
2004-09-27 17:10 ` Adam Ruth
2004-09-27 20:16 ` Keith H Duggar
2004-09-27 21:15 ` Chris Humphries
2004-09-28 4:46 ` Keith H Duggar
2004-09-27 20:34 ` Kevin Cline
2004-09-27 21:15 ` Adam Ruth
2004-09-23 23:05 ` Brian May
2004-09-24 3:06 ` Matthew Heaney
2004-09-24 3:52 ` Randy Brukardt
2004-09-24 5:15 ` Matthew Heaney
2004-09-24 19:12 ` Kevin Cline
2004-09-24 20:54 ` Randy Brukardt
2004-09-24 21:23 ` Matthew Heaney
2004-09-27 13:22 ` Chris Humphries
2004-09-27 13:45 ` Chris Humphries
2004-09-27 21:31 ` Kevin Cline
2004-09-27 23:51 ` Brian May
2004-09-28 12:21 ` Chris Humphries
2004-09-26 17:10 ` jayessay
2004-09-26 20:00 ` Georg Bauhaus
2004-09-27 14:45 ` jayessay
2004-09-24 0:19 ` Stephen Leake
2004-09-24 14:54 ` Cesar Rabak
2004-09-22 15:27 ` James Alan Farrell
2004-09-22 21:24 ` Simon Wright
2004-09-23 0:03 ` Brian May
2004-09-23 9:17 ` Kevin Cline
2004-09-23 0:44 ` Jeffrey Carter
2004-09-23 11:08 ` Georg Bauhaus
2004-09-23 8:15 ` Martin Krischik
2004-09-23 16:20 ` Matthew Heaney
2004-09-23 19:23 ` Simon Wright
2004-09-24 7:19 ` Martin Krischik
2004-09-24 16:31 ` Matthew Heaney
2004-09-24 19:24 ` Kevin Cline
2004-09-25 14:04 ` Martin Krischik
2004-09-26 10:36 ` Robert Kawulak
2004-09-26 15:35 ` Martin Krischik
2004-09-28 17:46 ` Robert Kawulak
2004-09-29 7:49 ` Martin Krischik [this message]
2004-09-29 12:01 ` Xenos
2004-09-29 18:16 ` Robert Kawulak
2004-09-30 15:55 ` Martin Krischik
2004-09-27 22:22 ` Kevin Cline
2004-09-28 7:51 ` Martin Krischik
2004-09-29 3:04 ` Kevin Cline
2004-09-29 6:03 ` Dale Stanbrough
2004-09-29 13:31 ` Georg Bauhaus
2004-09-29 13:46 ` Matthew Heaney
2004-09-30 3:42 ` Kevin Cline
2004-09-30 7:54 ` Dale Stanbrough
2004-09-30 16:50 ` Matthew Heaney
2004-10-01 0:04 ` Kevin Cline
2004-10-01 12:25 ` Georg Bauhaus
2004-10-02 7:35 ` K
2004-10-02 10:00 ` Brian May
2004-10-02 20:39 ` Kevin Cline
2004-10-03 2:17 ` Brian May
2004-10-02 13:40 ` Matthew Heaney
2004-10-02 23:33 ` Randy Brukardt
2004-10-03 12:47 ` Stephen Leake
2004-09-30 19:01 ` Björn Persson
2004-09-30 23:54 ` Kevin Cline
2004-10-01 16:11 ` Björn Persson
2004-10-02 6:48 ` K
2004-10-02 10:41 ` Björn Persson
2004-10-02 13:32 ` Matthew Heaney
2004-10-04 9:02 ` Ole-Hjalmar Kristensen
2004-09-23 9:00 ` Kevin Cline
2004-09-23 11:27 ` Ole-Hjalmar Kristensen
2004-09-23 19:11 ` Kevin Cline
2004-09-23 21:01 ` Alexander E. Kopilovich
2004-09-26 6:53 ` Kevin Cline
2004-09-26 15:29 ` Alexander E. Kopilovich
2004-09-23 21:54 ` Eric Jacoboni
2004-09-24 9:44 ` Ole-Hjalmar Kristensen
2004-09-24 9:50 ` Georg Bauhaus
2004-09-24 13:47 ` Matthew Heaney
2004-09-24 14:14 ` Dmitry A. Kazakov
2004-09-25 14:17 ` Martin Krischik
2004-09-27 8:12 ` Dmitry A. Kazakov
2004-09-27 12:59 ` Georg Bauhaus
2004-09-27 13:53 ` Dmitry A. Kazakov
2004-09-26 7:17 ` Kevin Cline
2004-09-27 8:19 ` Dmitry A. Kazakov
2004-09-27 13:03 ` Georg Bauhaus
2004-09-27 14:00 ` Dmitry A. Kazakov
2004-09-24 16:28 ` Kevin Cline
2004-09-24 17:45 ` Georg Bauhaus
2004-09-24 20:14 ` Matthew Heaney
2004-09-24 20:10 ` Frank J. Lhota
2004-09-27 8:29 ` Dmitry A. Kazakov
2004-09-26 7:13 ` Kevin Cline
2004-09-26 15:15 ` Matthew Heaney
2004-09-27 14:31 ` Kevin Cline
2004-09-27 15:05 ` Dmitry A. Kazakov
2004-09-28 4:22 ` Kevin Cline
2004-09-28 8:20 ` Dmitry A. Kazakov
2004-09-28 23:26 ` Robert Kawulak
2004-09-29 12:19 ` Dmitry A. Kazakov
2004-09-30 18:52 ` Robert Kawulak
2004-10-01 7:55 ` Dmitry A. Kazakov
2004-10-03 19:35 ` Robert Kawulak
2004-10-04 10:24 ` Dmitry A. Kazakov
2004-10-06 17:28 ` Robert Kawulak
2004-10-07 8:24 ` Dmitry A. Kazakov
2004-10-10 21:09 ` Robert Kawulak
2004-10-11 8:08 ` Dmitry A. Kazakov
2004-10-15 9:34 ` Robert Kawulak
2004-10-15 16:58 ` Martin Krischik
2004-09-29 15:44 ` Matthew Heaney
2004-09-30 18:27 ` Robert Kawulak
2004-09-28 17:21 ` Robert Kawulak
2004-09-29 1:38 ` Georg Bauhaus
2004-09-29 18:08 ` Robert Kawulak
2004-09-30 18:30 ` Georg Bauhaus
2004-09-29 8:08 ` Dmitry A. Kazakov
2004-09-29 18:11 ` Robert Kawulak
2004-09-30 8:57 ` Dmitry A. Kazakov
[not found] ` <cji06f$17a$2@atlantis.news.tpi.pl>
2004-10-01 8:58 ` Dmitry A. Kazakov
2004-10-03 19:53 ` Robert Kawulak
2004-10-04 10:15 ` Dmitry A. Kazakov
2004-10-04 12:16 ` Matthew Heaney
2004-10-04 13:21 ` Dmitry A. Kazakov
2004-10-06 17:20 ` Robert Kawulak
2004-10-07 10:08 ` Dmitry A. Kazakov
2004-10-10 22:21 ` Robert Kawulak
2004-10-11 8:46 ` Dmitry A. Kazakov
2004-10-15 9:25 ` Robert Kawulak
2004-10-15 11:56 ` Dmitry A. Kazakov
2004-10-20 20:06 ` Robert Kawulak
2004-10-21 2:51 ` Kevin Cline
2004-10-21 8:39 ` Dmitry A. Kazakov
2004-10-27 21:41 ` Robert Kawulak
2004-10-01 13:02 ` Robert Kawulak
2004-10-28 10:26 ` Larry Kilgallen
2004-09-27 16:21 ` Matthew Heaney
2004-09-28 2:47 ` Kevin Cline
2004-09-28 4:03 ` Brian May
2004-09-28 4:46 ` Matthew Heaney
2004-09-29 3:14 ` Kevin Cline
2004-09-29 3:50 ` Matthew Heaney
2004-09-29 3:52 ` Matthew Heaney
2004-09-29 13:44 ` Matthew Heaney
2004-09-26 6:32 ` Kevin Cline
2004-09-26 15:05 ` Matthew Heaney
2004-09-27 14:35 ` Kevin Cline
2004-09-23 19:30 ` jayessay
2004-09-23 19:42 ` Alexander E. Kopilovich
2004-09-22 21:05 ` Georg Bauhaus
2004-09-23 9:20 ` Kevin Cline
2004-09-23 16:58 ` Warren W. Gay VE3WWG
2004-09-23 6:24 ` Matthew Heaney
2004-09-23 11:23 ` Jeff C r e e.m
2004-09-23 11:35 ` Georg Bauhaus
2004-09-23 17:05 ` Pascal Obry
2004-09-23 17:07 ` Pascal Obry
2004-09-23 18:30 ` Matthew Heaney
2004-09-23 19:31 ` Simon Wright
2004-09-24 0:09 ` Stephen Leake
2004-09-25 10:41 ` Simon Wright
2004-09-23 18:24 ` Kevin Cline
2004-09-23 17:12 ` Dan Andreatta
2004-09-23 18:10 ` Pascal Obry
2004-09-23 19:21 ` Eric Jacoboni
2004-09-23 19:31 ` Ed Falis
2004-09-23 19:37 ` Eric Jacoboni
2004-09-24 20:09 ` Kevin Cline
2004-09-25 0:18 ` Eric Jacoboni
2004-09-26 6:37 ` Kevin Cline
2004-09-26 14:57 ` Matthew Heaney
2004-09-23 19:24 ` Eric Jacoboni
2004-09-23 21:30 ` Eric Jacoboni
2004-09-26 11:44 ` Jacob Sparre Andersen
2004-09-26 17:02 ` jayessay
2004-09-24 8:26 ` Ole-Hjalmar Kristensen
2004-09-23 22:08 ` Anders Gidenstam
2004-09-24 8:10 ` Ole-Hjalmar Kristensen
2004-09-24 17:43 ` Dan Andreatta
2004-09-24 17:40 ` Dan Andreatta
2004-09-24 18:50 ` Pascal Obry
2004-09-23 22:34 ` Randy Brukardt
2004-09-23 23:11 ` Dale Stanbrough
2004-09-24 1:57 ` Matthew Heaney
2004-09-24 6:32 ` Dale Stanbrough
2004-09-24 21:01 ` Randy Brukardt
2004-09-24 0:43 ` Jeffrey Carter
2004-09-24 1:51 ` Matthew Heaney
2004-09-24 20:21 ` Kevin Cline
2004-09-26 11:09 ` Jacob Sparre Andersen
2004-09-27 13:49 ` Björn Persson
2004-10-12 5:21 ` Ada Popularity: Comparison of languages Brian May
2004-10-12 11:43 ` Peter Hermann
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox