Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » strings mit qsort sortieren

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
01.01.2006, 22:49 Uhr
~Phenol
Gast


Hallo zusammen,

möchte mit qsort ein String sortieren! Warum geht das nicht so wie ich mir das vorstelle?


Code:
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

    string wort[4] = {"hallo","alpha","bauch","zoo"};

int vergleich (const void * a, const void * b) {
    return ( *(int*)a - *(int*)b);
}

int main(int argc, char *argv[])
{
    
    
    qsort(wort, 4, sizeof(string), vergleich);
    
    
    for (int i=0; i<4; i++) {
        cout << wort[i] << endl;
    }      
    system("PAUSE");
    return EXIT_SUCCESS;
}



Gruß
Phenol
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
02.01.2006, 10:35 Uhr
virtual
Sexiest Bit alive
(Operator)


Deine Vergelichsroutine vergleicht ints und keine Strings...
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
02.01.2006, 16:08 Uhr
0xdeadbeef
Gott
(Operator)


Warum benutzt du nicht std::sort?

C++:
#include <algorithm>
#include <string>

using namespace std;

string wort[4] = {"hallo","alpha","bauch","zoo"};

// ...
sort(wort, wort + 4);


Im echten Leben ist die Benutzung eines std::vectors an der Stelle aber in aller Regel sinnvoller.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.01.2006, 17:01 Uhr
~Phenol
Gast


Hi,

das habe ich auch schon gelesen das die Benutzung eines std::vectors besser ist. Jedoch würde ich gerne wissen wie ich das schreiben damit er keine ints sondern strings vergleicht und sortiert. Wie müsste da die Funktion zu aussehen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.01.2006, 17:21 Uhr
virtual
Sexiest Bit alive
(Operator)


zB so:

C++:
int vergleich (const void* a, const void* b) {
    return ((const std::string*)a)->compare(*(const std::string*)b);
}




Echte C++ Programmierer würden hier natürlich noch einen C++ typischen Cast machen, aber das war mir zuviel schreibarbeit.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.01.2006, 17:56 Uhr
~Phenol
Gast


aja klar. hätte ich drauf kommen müssen. vielen dank. naja über diesen cast werde ich mich dann mal noch belesen. vielen dank.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: