Erweiterung c++ - string-Memberfunktionen

Hatte ich das Bedürfnis zu tun, eine groß-und Kleinschreibung suchen und finden Sie den folgenden code, die hat den trick

bool ci_equal(char ch1, char ch2)
{
    return toupper((unsigned char)ch1) == toupper((unsigned char)ch2);
}

size_t ci_find(const string& str1, const string& str2)
{
    string::const_iterator pos = std::search(str1. begin ( ), str1. end ( ), str2.
    begin ( ), str2. end ( ), ci_equal);
    if (pos == str1. end ( ))
        return string::npos;
    else
        return pos - str1. begin ( );
}

Mich zu Fragen, was es dauern würde, um dieser eine member-Funktion von 'string', so könnte es genannt werden wie diese:

string S="abcdefghijklmnopqrstuv";
string F="GHI";

S.ci_find(F);

Merke ich, dass es viele Probleme mit Fall-Umbauten in nicht-englischen Sprachen, aber das ist nicht die Frage, die mich interessiert.

Seins ein Neuling, ich habe schnell verloren zwischen Containern und Vorlagen.

Gibt es trotzdem, dies zu tun? Könnte mir jemand zeigen Sie mir ein Beispiel für etwas ähnliches?

  • Wenn Sie konkret Fragen, ob C++ haben die Erweiterung Methoden wie C#?", dann die spezifische Antwort ist "Nein". Es gibt keine Möglichkeit zum hinzufügen von member-Funktionen, um die tatsächlichen std::string Klasse, kurz, hacking Ihre Umsetzung. Das kann nicht sein so schwierig, wie es klingt, aber es ist so schlimm, eine Idee, wie es klingt.
  • Ach ja, und "Könnte mir jemand zeigen Sie mir ein Beispiel für etwas ähnliches?" - der code, den Sie bereits geschrieben haben, ist die C++-ish Weg, es zu tun. Klassen "erweitert" oder "enhanced", indem Sie nicht-member-Funktionen, die auf Sie einwirken, und C++ - Programmierer sind nicht so verzweifelt in der Liebe mit der . Mitglied Funktionsaufruf-syntax, die Sie als ein problem 😉
  • Ich möchte vielen Dank an alle, die geantwortet haben, um diese Abfrage. Es scheint die kurze Antwort ist "Nein, es ist unmöglich, andere member-Funktionen string". So, das war der Kern meiner Abfrage habe ich beschlossen, zu akzeptieren, Toms Antwort.
InformationsquelleAutor Mike D | 2010-08-22
Schreibe einen Kommentar