» Beispiel zur Angwendung von tolower bei cpp-Strings

Verzweigungen, Schleifen und Felder in C++Neuen Thread eröffnenNeue Antwort erstellenStringmanipulation vor Konvertierung zu einer Zahl!
AutorNachricht
Junior 
Name: Voller Name als Anagramm: Fitje Weshoms
Geschlecht:
Fahrzeug: Yamaha YZF R6 Thundercat
Anmeldedatum: 15.07.2012
Beiträge: 92
Wohnort: Amberg, Oberpfalz
26.12.2019, 17:28
zitieren

Hallo Leute!

Hier mal ein kleines Beispiel, wie man tolower an cpp-Strings anwendet.
Gerade bei UTF8 ist das wichtig, da die deutschen Umlaute mit 2 Byte gespeichert werden.
Im Gegensatz zum alten ASCII wo nur 1 Byte notwendig war.


/** Testet eigenen tolower-Ersatz*/
/// std::transform applies the given function to a range and stores the result in another range, beginning at d_first.
/// std::transform: transformiert einen Datensatz mit einer Funktion in einen anderen
//
/// begin()   This function gives a reference to the first element.
/// end()     Returns an iterator to the character following the last character of the string.
///
/// OutputIt transform( InputIt first1, InputIt last1, OutputIt d_first,
///                     UnaryOperation unary_op );
///
///   std::transform applies the given function to a range and stores the result in another range, beginning at d_first.
///
///1) The unary operation unary_op is applied to the range defined by [first1, last1).
///3) The binary operation binary_op is applied to pairs of elements from two ranges: one defined by [first1, last1) and the other beginning at first2.
///2,4) Same as (1,3), but executed according to policy. This overload only participates in overload resolution if std::is_execution_policy_v<std::decay_t<ExecutionPolicy>> is true

#include <iostream>
#include <algorithm>  /// for transform
/* Original:
std::string str_tolower(std::string s) {
    std::transform(s.begin(), s.end(), s.begin(),
                /// static_cast<int(*)(int)>(std::tolower)         // wrong
                /// [](int c){ return std::tolower(c); }           // wrong
                /// [](char c){ return std::tolower(c); }          // wrong
                   [](unsigned char c){ return std::tolower(c); } // correct
                  );
    return s;
}*/

///Erste Version
std::string str_tolower(std::string s)
{
 std::transform(s.begin(), s.end(), s.begin(), [](unsigned char c){ return std::tolower(c); } // correct
                  );
    return s;
}
/// Version tastet Quell-String nicht an
std::string str_toupper(std::string s)
{
 std::transform(s.begin(), s.end(), s.begin(),[](unsigned char c){ return std::toupper(c); } // correct
                 );
    return s;
}
/// Version tastet Quell-String an
void str_tolowerb(std::string *s)
{
 std::transform(s->begin(), s->end(), s->begin(), [](unsigned char c){ return std::tolower(c); } // correct
                  );
}

int main(int argc, char **argv)
{
    std::string s("Exemplar");
    std::string st("TestSTRING ÖÄÜß²³ÖÄÜ tEST");
    std::string sta("");
    std::string stb("");
    std::string stc("");
    *s.begin() = 'e';
    std::cout << s <<'\n';

    auto i = s.cbegin();
    std::cout << *i << '\n';
    ///  *i = 'E'; // error: i is a constant iterator

    auto j = s.end();         //Zeichen nach letzten String-Zeichen ist newline-Zeidchen
    std::cout << *j << '\n';

    sta = st;

    std::cout << "Teststring vorher : " << st << std::endl;
    /// ursprüngliche Version
    std::transform(st.begin(), st.end(), st.begin(), (int (*)(int))std::toupper);
    std::cout << "Teststring nachher: " << st << std::endl;
    stb = str_tolower(sta);
    std::cout << "nach str_tolower  : " << stb << std::endl;
    stc = str_toupper(stb);
    std::cout << "nach str toupper  : " << stc << std::endl;
    str_tolowerb(&stc);
    std::cout << "nach str_tolowerb  : " << stc << std::endl;

 return 0;
}



pn
Gast 
26.12.2019, 17:28
zitieren

Mach mit!

Wenn Dir die Beiträge zum Thread "Beispiel zur Angwendung von tolower bei cpp-Strings" gefallen haben oder Du noch Fragen hast oder Ergänzungen machen möchtest, solltest Du Dich gleich bei uns anmelden:



Registrierte Mitglieder genießen die folgenden Vorteile:
✔ kostenlose Mitgliedschaft
keine Werbung
✔ direkter Austausch mit Gleichgesinnten
✔ neue Fragen stellen oder Diskussionen starten
✔ schnelle Hilfe bei Problemen
✔ Bilder und Videos hochladen
✔ und vieles mehr...


Neuen Thread eröffnenNeue Antwort erstellen
Ähnliche BeiträgeRe:
Letzter Beitrag
Problem mit Strings
Guten Tag, ich habe folgendes Problem mit dem Programm Autoplay Media Studio von Indigorose: Ich habe 9 Strings, die alle jeweils einen Buchstaben enthalten. Jetzt möchte ich alle 81 Möglichkeiten, die 9 Strings anzuordnen abspeichern. Hat jemand...
[Allgemein]von sowas1111
0
283
22.08.2011, 15:26
sowas1111
 Beispiel in QT für Primzahlenberechnung und textEdit
Hallo Leute! Hier ein kleines Programmchen zur Berechnung von Primzahlen. Quellcode in der ZIP-Datei. Kommerzielle Ausnutzung verboten! No Warranty! Keine Gewähr!...
[C++]von Guiseppe
0
437
07.04.2017, 14:16
Guiseppe
Beispiel zum Berechnen des Sinus
Hallo Leute! Hier mal ein Beispiel wie man eine Funktion schreiben kann, die den Sinus Berechnet: #include <iostream> using namespace std; #include <math.h> double bogenmass(double winkelingrad) { double pi, boma; pi =...
[C++]von Guiseppe
0
455
08.02.2016, 16:42
Guiseppe
Aufklärung direkt am praktischen Beispiel
Der kleine Thomas ist stolz, dass er das 13. Lebensjahr erreicht hat und fühlt sich reif genug, um endlich die Geheimnisse des Kinder Kriegens von seinen Eltern zu erfahren. Mit stolzer Brust marschiert er ins Arbeitszimmer, wo gerade der Papa am...
von Chris 1985
3
4.571
17.07.2008, 18:18
patrul
Kleiner Primzahlenrechner mit Beispiel zum Verschlüsseln
Hallo Leute! Hier mal ein kleines Beispiel wie man mit Primzahlen rechnen und verschlüsseln kann. Vorab eine klitzekleine Erklärung Zuerst Punkt 5 wählen und die Grenzen festsetzen, bzw 3000 und 4000. Danach werden die Primzahlen in diesen Bereich...
[C++]von Guiseppe
0
603
05.03.2020, 17:56
Guiseppe
 Beispiel für die Erzeugung von Zufallszahlen, mit Quellcode für die Funktionen!
Hallo Leute! Hoffentlich habt Ihr den Rutsch ins neue Jahr gut überstanden. Da ich mich momentan mit meinen alten Programmen beschäftige, wie ich diese nach C++ und ins Linux Leap 42,1-Zeitalter portieren kann, habe ich tief in meiner...
[C++]von Guiseppe
0
573
12.01.2016, 09:40
Guiseppe
Kleines Beispiel zur Winkelberechnung mit Klasse, Konstruktor und Destruktor
Hallo, hier mal ein kleines Versuchsprogramm für c++ Compiler wie code::Blocks. Stark vereinfacht programmiert. /* Berechnet Cosinus, Sinus und Tangens eines Winkels * Dazu wird zuerst der Winkel in Bogenmass umgerechnet */ #include...
[C++]von Guiseppe
0
526
19.07.2014, 13:35
Guiseppe
[GUIDE] Der Ultimative Rostschutz für unsere Hondas am Beispiel Del Sol
Hallo Honda Fans, nachdem ich nun schon 4 Jahre viel Spass mit meinem Sol habe, hier einmal ein Tutorial, das dazu beitragen könnte, dass wir alle möglichst lange Spass an unseren Schätzchen haben. Die im folgenden beschriebenen Massnahmen sind für noch...
von archi-07
29
2.388
07.12.2015, 19:04
Deus
Beispiel für Zeiger auf Funktionen: Ermittlung des Biegewiderstandes per sukzessiver Progression
Hallo Leute! Vor einiger Zeit hatte ich das Problem bei der Errechnung von Variablen zur Festigkeitsberechnung von Rohren. Genauer gesagt den Biegewiderstandmoment. Das ist der alte Name. Der neue ist axialer Widerstandsmoment. Dabei musste ich folgende...
[C++]von Guiseppe
0
563
13.02.2016, 16:12
Guiseppe
© 2004 - 2025 www.programmierer-forum.de | Communities | Impressum |