Article View: be.comp.programming
Article #2426Re: Probleem met strings in C++
From: Kristoffel
Date: Sat, 19 Jun 2004 14:08
Date: Sat, 19 Jun 2004 14:08
60 lines
2811 bytes
2811 bytes
Kristoffel wrote:
> Skender wrote:
>
>> Ik heb een programmatje geschreven dat postcodes zoekt als oefening op
>> strings, maar het werkt niet zoals het zou moeten.
>>
>> Ik heb een bestand "belgie" dat postcodes bevat. Een lijn per gemeente,
>> zoals bijvoorbeeld
>> 9000Gent
>> 9840De Pinte
>>
>> De postcodes staan op http://vrijzijn.be/belgie
>> M'n code:
>>
>> char *strlwr (char* tekst){
>> int aantal=strlen(tekst);
>> char* res = new char[aantal];
>> for(int i=0; i<aantal; i++)
>> res[i]=tolower(tekst[i]);
>> return res;
>> }
>>
>
> Ik heb je probleem kunnen simuleren met versie 3.2.2.
> Je doet hier een *new*, maar er gebeurt nooit een *delete* !
> Het kan zijn dat vorige versie van gcc hier geen probleem mee hadden,
> maar het is niet erg proper.
>
> Pas je functie aan :
>
> char *strlwr (char *tekst) {
> int aantal=strlen (tekst);
> //char* res = new char[aantal];
> for (int i = 0; i < aantal; i++)
> tekst[i] = tolower(tekst [i]);
> // res[i] = tolower(tekst [i]);
> return tekst;
> // return res;
> }
>
> en je hebt geen problemen meer.
> Als 'tekst' niet mag wijzigen, alloceer met new dan een variable in main
> (of in naamBevat), en pas er nadien een delete op toe.
>
> --
> Kristoffel
Best ook Gemeente::naamBevat aanpassen, anders verander je het attribuut
gemeente.naam in kleine letters!
bool Gemeente::naamBevat (char *p_naam) {
char *res = new char [strlen (getNaam ())+1];
strcpy (res, getNaam ());
bool ret = strstr (strlwr(res), strlwr (p_naam)) != 0;
delete res;
return ret;
}
--
Kristoffel
Technical Details
Message-ID:
<FNXAc.160366$TL1.8208446@phobos.telenet-ops.be>Path:
arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed.cwix.com!ossa.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mailReferences:
<6jKAc.159880$da2.8238210@phobos.telenet-ops.be> <epXAc.160351$_b2.8245342@phobos.telenet-ops.be>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,f17987ac718646c6 X-Google-Attributes: gidfcea4,public Path: arc1-ca.pugleaf.net!g2news1.google.com!news1.google.com!news.glorb.com!border1.nntp.dca.giganews.com!nntp.giganews.com!newsfeed.cwix.com!ossa.telenet-ops.be!phobos.telenet-ops.be.POSTED!not-for-mail From: Kristoffel <kdg1955@yahoo.com> User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.6) Gecko/20040113 X-Accept-Language: en-us, en MIME-Version: 1.0 Newsgroups: be.comp.programming Subject: Re: Probleem met strings in C++ References: <6jKAc.159880$da2.8238210@phobos.telenet-ops.be> <epXAc.160351$_b2.8245342@phobos.telenet-ops.be> In-Reply-To: <epXAc.160351$_b2.8245342@phobos.telenet-ops.be> Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit Lines: 60 Message-ID: <FNXAc.160366$TL1.8208446@phobos.telenet-ops.be> Date: Sat, 19 Jun 2004 14:08:37 GMT NNTP-Posting-Host: 195.130.140.22 X-Complaints-To: abuse@telenet.be X-Trace: phobos.telenet-ops.be 1087654117 195.130.140.22 (Sat, 19 Jun 2004 16:08:37 MEST) NNTP-Posting-Date: Sat, 19 Jun 2004 16:08:37 MEST Organization: Telenet Internet