/ Forside / Teknologi / Udvikling / C/C++ / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
Et enkelt spørgsmål om string::find() i C+~
Fra : Bertel Lund Hansen


Dato : 15-10-02 07:01

Hej alle

Jeg har brug for at finde forekomsten af "aa" i nogle strenge.
Jeg gør sådan her:

   unsigned int pos;

   pos=name.find("aa");
   while ((signed) pos<0) {
      name.erase(pos,2);
      name.insert(pos,"å");
      pos=name.find("aa");
   }

Hvis jeg ikke caster pos, får jeg en compilerfejl, og i øvrigt
ville testen så også fejle. Men min bog oplyser at find() skal
returnere -1 ved fiasko. Hvordan hænger det sammen?

Compileren er Borlands Cpp 5.5.

(Jeg kunne godt erklære pos som signed int, men så skal jeg bare
caste nogle andre steder)

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

 
 
Anders J. Munch (15-10-2002)
Kommentar
Fra : Anders J. Munch


Dato : 15-10-02 08:47

"Bertel Lund Hansen" <nospam@lundhansen.dk> wrote:
> Hej alle
>
> Jeg har brug for at finde forekomsten af "aa" i nogle strenge.
> Jeg gør sådan her:
>
> unsigned int pos;
>
> pos=name.find("aa");
> while ((signed) pos<0) {
> name.erase(pos,2);
> name.insert(pos,"å");
> pos=name.find("aa");
> }
>
> Hvis jeg ikke caster pos, får jeg en compilerfejl, og i øvrigt
> ville testen så også fejle. Men min bog oplyser at find() skal
> returnere -1 ved fiasko. Hvordan hænger det sammen?

find() returnerer string::npos. string::npos initialiseres med
-1. string::npos er af string::size_type. find() returnerer altså
string::size_type(-1), og da typen er unsigned, bliver det det største
tal i string::size_type.

>
> Compileren er Borlands Cpp 5.5.
>
> (Jeg kunne godt erklære pos som signed int, men så skal jeg bare
> caste nogle andre steder)

string::size_type pos;

pos=name.find("aa");
while (pos != string::npos) ...

- Anders



Søg
Reklame
Statistik
Spørgsmål : 177500
Tips : 31968
Nyheder : 719565
Indlæg : 6408509
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste