πŸš€ go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: be.comp.programming
16 messages
16 total messages Started by Jo Vermeulen Wed, 28 Jan 2004 17:45
C++: integer achter STL string plakken
#3034
Author: Jo Vermeulen
Date: Wed, 28 Jan 2004 17:45
34 lines
1807 bytes
Hoi,

Vraag me af of ik een integer kan toevoegen aan een STL string zonder die
eerst in een char * string te zetten. Een methode die werkt, maar dit wel
vereist is:

---
int num = 5;
char buff[80];
string output = "";

sprintf( buff, "%d", num );
output += buff;
---

De code moet werken op zowel UNIX als Windows, dus niet-standaard functies
zoals "itoa(...)" zijn uitgesloten. 

Liefst had ik een functie die een char * of string teruggeeft zodat ik dit
kan doen:

---
output += foo( num );
---

Alvast bedankt,

Mvg,

-- 
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo
Re: C++: integer achter STL string plakken
#3035
Author: Sjoerd A. Schreuder
Date: Wed, 28 Jan 2004 17:56
26 lines
1824 bytes
Jo Vermeulen wrote:
> Vraag me af of ik een integer kan toevoegen aan een STL string zonder die
> eerst in een char * string te zetten.
> 
> Liefst had ik een functie die een char * of string teruggeeft zodat ik dit
> kan doen:
> 
> ---
> output += foo( num );
> ---

Uit mijn hoofd:

#include <sstream>

template <typename T>
std::string to_string(const T& value)
{
   std::ostringstream os;
   os << value;
   return os.str();
}

Sjoerd Schreuder

PS: gcc 2.95 kan deze standaard (!) code helaas niet aan.
Re: C++: integer achter STL string plakken
#3036
Author: bomberboy
Date: Wed, 28 Jan 2004 18:00
42 lines
2410 bytes
On Wed, 28 Jan 2004 18:45:36 +0100, Jo Vermeulen wrote:

> Hoi,
> 
> Vraag me af of ik een integer kan toevoegen aan een STL string zonder die
> eerst in een char * string te zetten. Een methode die werkt, maar dit wel
> vereist is:

Hiervoor kan je stringstreams gebruiken.  (<sstream>)
Voor output gebruik je dan bv een ostringstream:

ostringstream ost;
ost << "pompom" << num << somothervar << "patapoef";

Je maakt hier dan een string van door de str() methode aan te roepen:
ost.str();

> ---
> int num = 5;
> char buff[80];
> string output = "";
> 
> sprintf( buff, "%d", num );
> output += buff;
> ---

sprintf() is eigenlijk C en geen C++.

> De code moet werken op zowel UNIX als Windows, dus niet-standaard functies
> zoals "itoa(...)" zijn uitgesloten. 

<sstream> maakt deel uit van de STl, dus dat zou geen probleem mogen zijn.

> Liefst had ik een functie die een char * of string teruggeeft zodat ik dit

Je hebt een manier gevonden om een string terug te krijgen :)
Ik vermoed dat dit wel ongeveer doet wat je wou?

-- 
Bruno

What this country needs is a good five cent nickel.
Re: C++: integer achter STL string plakken
#3039
Author: Jo Vermeulen
Date: Wed, 28 Jan 2004 19:40
52 lines
2480 bytes
bomberboy wrote:

> On Wed, 28 Jan 2004 18:45:36 +0100, Jo Vermeulen wrote:
> 
>> Hoi,
>> 
>> Vraag me af of ik een integer kan toevoegen aan een STL string zonder die
>> eerst in een char * string te zetten. Een methode die werkt, maar dit wel
>> vereist is:
> 
> Hiervoor kan je stringstreams gebruiken.  (<sstream>)
> Voor output gebruik je dan bv een ostringstream:
> 
> ostringstream ost;
> ost << "pompom" << num << somothervar << "patapoef";
> 
> Je maakt hier dan een string van door de str() methode aan te roepen:
> ost.str();

OK bedankt!

>> ---
>> int num = 5;
>> char buff[80];
>> string output = "";
>> 
>> sprintf( buff, "%d", num );
>> output += buff;
>> ---
> 
> sprintf() is eigenlijk C en geen C++.
> 
>> De code moet werken op zowel UNIX als Windows, dus niet-standaard
>> functies zoals "itoa(...)" zijn uitgesloten.
> 
> <sstream> maakt deel uit van de STl, dus dat zou geen probleem mogen zijn.
> 
>> Liefst had ik een functie die een char * of string teruggeeft zodat ik
>> dit
> 
> Je hebt een manier gevonden om een string terug te krijgen :)
> Ik vermoed dat dit wel ongeveer doet wat je wou?

Idd, dit is even goed.

Mvg,

-- 
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo
Re: C++: integer achter STL string plakken
#3041
Author: Jo Vermeulen
Date: Wed, 28 Jan 2004 20:11
46 lines
2141 bytes
Sjoerd A. Schreuder wrote:

> Jo Vermeulen wrote:
>> Vraag me af of ik een integer kan toevoegen aan een STL string zonder die
>> eerst in een char * string te zetten.
>> 
>> Liefst had ik een functie die een char * of string teruggeeft zodat ik
>> dit kan doen:
>> 
>> ---
>> output += foo( num );
>> ---
> 
> Uit mijn hoofd:
> 
> #include <sstream>
> 
> template <typename T>
> std::string to_string(const T& value)
> {
>    std::ostringstream os;
>    os << value;
>    return os.str();
> }

Is een heel mooie manier, bedankt Sjoerd!

> Sjoerd Schreuder
> 
> PS: gcc 2.95 kan deze standaard (!) code helaas niet aan.

Aww.. 

Ik gebruik hier gcc 3.2.3, en hier lukt het. Ik zou het echter liefst ook
onder Windows gecompileerd willen krijgen. Lukt dit met de compiler van
Visual C++ .NET (2002) oftewel vc7?

Bedankt voor je tijd!

Mvg,

-- 
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo
Re: C++: integer achter STL string plakken
#3043
Author: Sjoerd A. Schreuder
Date: Wed, 28 Jan 2004 22:29
26 lines
1888 bytes
Jo Vermeulen wrote:
> Sjoerd A. Schreuder wrote:
>>Uit mijn hoofd:
>>
>>#include <sstream>
>>
>>template <typename T>
>>std::string to_string(const T& value)
>>{
>>   std::ostringstream os;
>>   os << value;
>>   return os.str();
>>}
>>
>>PS: gcc 2.95 kan deze standaard (!) code helaas niet aan.
> 
> Aww.. 
> 
> Ik gebruik hier gcc 3.2.3, en hier lukt het. Ik zou het echter liefst ook
> onder Windows gecompileerd willen krijgen. Lukt dit met de compiler van
> Visual C++ .NET (2002) oftewel vc7?

Vast wel. VC++ 6.0 kon het al. Alleen gcc 2.95 kon het niet, maar
ondertussen is gcc al weer een paar releases verder.

Sjoerd Schreuder
Re: integer achter STL string plakken
#3044
Author: Serve Laurijssen
Date: Thu, 29 Jan 2004 08:23
15 lines
1563 bytes
"Jo Vermeulen" <jo@lumumba.luc.ac.be> wrote in message
news:bv8spp$g9g$1@reader11.wxs.nl...
> int num = 5;
> char buff[80];
> string output = "";
>
> sprintf( buff, "%d", num );
> output += buff;
> ---
>
> De code moet werken op zowel UNIX als Windows, dus niet-standaard functies
> zoals "itoa(...)" zijn uitgesloten.

Typisch, atol, atof enz zijn wel standaard maar andersom niet.
Re: C++: integer achter STL string plakken
#3060
Author: Nicolas Barbier
Date: Fri, 30 Jan 2004 22:33
21 lines
1844 bytes
Jo Vermeulen wrote:

> Sjoerd A. Schreuder wrote:
> 
>> PS: gcc 2.95 kan deze standaard (!) code helaas niet aan.
> 
> Aww..
> 
> Ik gebruik hier gcc 3.2.3, en hier lukt het. Ik zou het echter liefst ook
> onder Windows gecompileerd willen krijgen.

Bij de laatste MinGW zit GCC 3.3.1 voor zover ik kan lezen (-:. De 2.95
serie was trouwens niet echt standaard-compliant (de standaard was nog maar
net "af"). Er ontbreken bijvoorbeeld nog een hele hoop x files, waarbij de
oude naam x.h was. Ik denk dat het equivalent voor sstream toen
stringstream.h noemde (is wel niet helemaal compatibel omdat de std
namespace nog niet wordt gebruikt etc).

-- 
Nicolas Barbier
Protecting innovation against patent inflation <url:http://swpat.ffii.org/>
Re: C++: integer achter STL string plakken
#3062
Author: Jo Vermeulen
Date: Sat, 31 Jan 2004 15:13
34 lines
2173 bytes
Nicolas Barbier wrote:

> Jo Vermeulen wrote:
> 
>> Sjoerd A. Schreuder wrote:
>> 
>>> PS: gcc 2.95 kan deze standaard (!) code helaas niet aan.
>> 
>> Aww..
>> 
>> Ik gebruik hier gcc 3.2.3, en hier lukt het. Ik zou het echter liefst ook
>> onder Windows gecompileerd willen krijgen.
> 
> Bij de laatste MinGW zit GCC 3.3.1 voor zover ik kan lezen (-:. 

OK, thanks, had ik niet aan gedacht. Dan kan ik het idd altijd zo
compileren :)

> De 2.95 
> serie was trouwens niet echt standaard-compliant (de standaard was nog
> maar net "af"). Er ontbreken bijvoorbeeld nog een hele hoop x files,
> waarbij de oude naam x.h was. Ik denk dat het equivalent voor sstream toen
> stringstream.h noemde (is wel niet helemaal compatibel omdat de std
> namespace nog niet wordt gebruikt etc).

Ondersteunen de laatste gcc versies de complete C++ ANSI standaard dan?

Mvg,

-- 
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo
Re: C++: integer achter STL string plakken
#3063
Author: Nicolas Barbier
Date: Sat, 31 Jan 2004 15:42
9 lines
1401 bytes
Jo Vermeulen wrote:

> Ondersteunen de laatste gcc versies de complete C++ ANSI standaard dan?

Dat is toch de bedoeling dacht ik.

-- 
Nicolas Barbier
Protecting innovation against patent inflation <url:http://swpat.ffii.org/>
Re: C++: integer achter STL string plakken
#3064
Author: Jo Vermeulen
Date: Sat, 31 Jan 2004 19:19
18 lines
1636 bytes
Nicolas Barbier wrote:

> Jo Vermeulen wrote:
> 
>> Ondersteunen de laatste gcc versies de complete C++ ANSI standaard dan?
> 
> Dat is toch de bedoeling dacht ik.

Uiteraard, maar wist niet zeker of dat nu al volledig gelukt was, vermits
versie 2.95 toch ook niet zo oud is :)

Mvg,

-- 
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo
Re: C++: integer achter STL string plakken
#3065
Author: Arnold Hendriks
Date: Sat, 31 Jan 2004 19:55
18 lines
2251 bytes
"Jo Vermeulen" <jo@lumumba.luc.ac.be> wrote in message
news:bvgvd8$pbb$1@reader11.wxs.nl...
> > Dat is toch de bedoeling dacht ik.
>
> Uiteraard, maar wist niet zeker of dat nu al volledig gelukt was, vermits
> versie 2.95 toch ook niet zo oud is :)
2.95 kwam op 13 juli 1999, 2.95.3 op 16 maart 2001. C++ zelf werd pas in 98
vastgelegd, dus huidige gcc versies hebben ongeveer vier keer zoveel tijd
gehad om de standaard goed te implementeren :)

Volgens dit bericht
http://aulos.calarts.edu/pipermail/music-dsp/2003-November/025431.html
zou gcc 3.3 het nu behoorlijk goed doen.

(grappig dat volgens die lijst BCB6 ook nog redelijk compliant zou zijn.
naar mijn eigen ervaring is C++ ondersteuning in BCB6 nog slechter geworden
dan BCB5 - de laatste ondersteunde bv wel boost::function, maar BCB6 niet
meer :( )
Re: C++: integer achter STL string plakken
#3066
Author: Jo Vermeulen
Date: Sat, 31 Jan 2004 22:25
42 lines
2883 bytes
Arnold Hendriks wrote:

> "Jo Vermeulen" <jo@lumumba.luc.ac.be> wrote in message
> news:bvgvd8$pbb$1@reader11.wxs.nl...
>> > Dat is toch de bedoeling dacht ik.
>>
>> Uiteraard, maar wist niet zeker of dat nu al volledig gelukt was, vermits
>> versie 2.95 toch ook niet zo oud is :)
> 2.95 kwam op 13 juli 1999, 2.95.3 op 16 maart 2001. C++ zelf werd pas in
> 98 vastgelegd, dus huidige gcc versies hebben ongeveer vier keer zoveel
> tijd gehad om de standaard goed te implementeren :)
> 
> Volgens dit bericht
> http://aulos.calarts.edu/pipermail/music-dsp/2003-November/025431.html
> zou gcc 3.3 het nu behoorlijk goed doen.

Als ik het goed begrijp is visual c++ .net of versie 7 nog net beter? Dan
zal ik die template ook wel kunnen compileren met vc7.

> (grappig dat volgens die lijst BCB6 ook nog redelijk compliant zou zijn.
> naar mijn eigen ervaring is C++ ondersteuning in BCB6 nog slechter
> geworden dan BCB5 - de laatste ondersteunde bv wel boost::function, maar
> BCB6 niet meer :( )

Ik dacht dat Boost slechts een uitbreiding was op STL, maar niet tot de ISO
standaard behoorde. Dit vond ik op de Boost FAQ
(http://www.boost.org/more/faq.htm):

---
Will the Boost.org libraries become part of the next C++ Standard?  Some
might, someday, but that is up to the standards committee.  Committee
members who also participate in Boost will definitely be proposing at least
some Boost libraries for standardization.
---

Mvg,

-- 
Jo Vermeulen
Student Computer Science at the tUL
email: jo@lumumba.luc.ac.be
www: http://lumumba.luc.ac.be/jo
Re: C++: integer achter STL string plakken
#3067
Author: Arnold Hendriks
Date: Sat, 31 Jan 2004 22:49
20 lines
2546 bytes
"Jo Vermeulen" <jo@lumumba.luc.ac.be> wrote in message
news:bvhadr$pp5$1@reader08.wxs.nl...
> Arnold Hendriks wrote:
> > (grappig dat volgens die lijst BCB6 ook nog redelijk compliant zou zijn.
> > naar mijn eigen ervaring is C++ ondersteuning in BCB6 nog slechter
> > geworden dan BCB5 - de laatste ondersteunde bv wel boost::function, maar
> > BCB6 niet meer :( )
>
> Ik dacht dat Boost slechts een uitbreiding was op STL, maar niet tot de
ISO
> standaard behoorde.
Dat klopt, maar het kunnen compileren van Boost (of bv Loki) is wel een
indicatie hoe goed de compiler zich aan de C++ standaard houdt. Daarom vond
ik het erg slecht dat BCB6 de fout in ging bij onderdelen die in BCB5 nog
werkten. Hoewel boost soms om compiler bugs heen werkt, is dit toch iets
meer een praktijk-test dan pure standard conformance testing.

In de boost regressietests zie je bv dat gcc 3.3 slechts op 1% faalt, VC++
7.1 komt er ongeveer evengoed uit. (overigens geven ze in hun testresultaten
wel aan dat je het niet moet zien als maat van C++ conformance)
Re: integer achter STL string plakken
#3072
Author: Johan Wevers
Date: Sun, 01 Feb 2004 23:43
13 lines
1325 bytes
Serve Laurijssen <cs@nospam.comp.com> wrote:

>> De code moet werken op zowel UNIX als Windows, dus niet-standaard functies
>> zoals "itoa(...)" zijn uitgesloten.
>
>Typisch, atol, atof enz zijn wel standaard maar andersom niet.

Daar heb je de sprintf() voor.
 
-- 
ir. J.C.A. Wevers         //  Physics and science fiction site:
johanw@vulcan.xs4all.nl   //  http://www.xs4all.nl/~johanw/index.html
PGP/GPG public keys at http://www.xs4all.nl/~johanw/pgpkeys.html
Re: integer achter STL string plakken
#3078
Author: ServοΏ½ Lau
Date: Tue, 03 Feb 2004 21:10
13 lines
1482 bytes
"Johan Wevers" <johanw@vulcan.xs4all.nl> wrote in message
news:HsFJ82.489@vulcan.xs4all.nl...
> Serve Laurijssen <cs@nospam.comp.com> wrote:
>
> >> De code moet werken op zowel UNIX als Windows, dus niet-standaard
functies
> >> zoals "itoa(...)" zijn uitgesloten.
> >
> >Typisch, atol, atof enz zijn wel standaard maar andersom niet.
>
> Daar heb je de sprintf() voor.

sscanf had het omgekeerde kunnen doen, ook zonder type checking.
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads