Det er fordi strlen tager en char pointer som argument; strlen(char*);
string er en anden type variabel. Det er en såkaldt STL type. STL står for Standard Template Library og er et bibliotek der følger med ALLE C++ implementationer.
Hvorfor bruge strlen..? cout << abe.size() << endl;
Det med pointeren var en meget anvendt fremgangsmåde i C, men i den objektorienterede verden (C++) betragtes det nok lidt som dårlig programmeringsstil. Har man kun ganske få pointere, er det naturligvis let at holde styr på. Har man derimod en masse pointere til forskellige lokationer i strenge, kan det hurtigt gå galt! Fx kan man jo komme til at sætte pointeren til at pege på noget forkert memory (der er intet tjek) og derved få programmet til at crash'e. Det kan være ret svært at finde sådanne fejl..! Bruger man istedet et index, kan man altid let se om det ligger inden for strengens længde. STL giver også mulighed for at bruge iterators, der minder meget om brug af pointers, fx:
Her er Connection en vector indeholdende objekter af typen CClientConnection.
ConnectList::iterator it = Connections.begin(); // Iterator sættes til vectorens begyndelse while(it!=Connections.end()) { CClientConnection *con = (CClientConnection *)(*it); delete con; it++; // Næste element }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.