string-Klasse Groß-/Klein-Schreibung
-
Mein Programm:
#include <string> #include <iostream> using namespace std; int main() { string s1 = "ABCD"; string s2 = "abcd"; string s3 = "DCBA"; string s4 = "dcba"; //Ausgabe cout << (s1 < s2) << endl; //1 cout << (s1 < s3) << endl; //1 cout << (s1 < s4) << endl; //1 cout << (s2 < s3) << endl; //0 => "abcd" ist größer als "DCBA" cout << (s2 < s4) << endl; //1 cout << (s3 < s4) << endl; //1 return 0; }Meinem Programm entnehme ich, dass Strings mit kleinen Buchstaben in jedem Fall größer sind als welche mit großen Zeichen. Soweit so gut.
Aber was, wenn ich zum Beispiel eine Liste von Namen sortieren möchte?
Dann würden doch die Namen die klein geschrieben sind (oder klein geschrieben beginnen) in jedem fall nach den großgeschriebenen kommen.
Das ist ja nun wirklich nicht im Sinne des erfinders oder?Wie kann ich das beheben?
-
Prüfe ob alle Namen großgeschrieben sind und wenn nicht änder das. Kann man ohne die Buchstaben zu kennen mit hilfe der ASCII tabelle
-
und was mach ich dann wenn die namen nicht alle großgeschrieben sind?
einfach abbrechen und den nutzer vor eine unsirtierte liste setzen?
-
Du kannst deine eigene Regel mitgeben, wie du sortieren möchtest.
Durch einen Funktor, oder Prädikat:
http://www.cplusplus.com/reference/algorithm/sort.html
-
daersc schrieb:
und was mach ich dann wenn die namen nicht alle großgeschrieben sind?
einfach abbrechen und den nutzer vor eine unsirtierte liste setzen?Überpüfe doch die Eingabe und wenn sie nicht richtig eingegeben wurde dann änder sie einfach! Einzelnen chars in ein int Umwandeln und mit der ASCII tabelle arbeiten
http://de.wikipedia.org/wiki/ASCII
Ich hab das schonmal so gemacht, aber vll gehts ja noch eleganter
-
Einfach den Namen in Uppercase umändern?!
-
-
ich möchte nicht unbedingt großschreibung erzwingen... die namen sollten schon so bleiben...
das mit den selbstdefinierten regeln bei std::sort() hilft mir glaub ich am meisten, danke
