C++ :: Aufgabe #178 :: Lösung #2
5 Lösungen
#178
Groß- und Kleinuchstaben
Anfänger - C++
von MeLThRoX
- 22.08.2017 um 19:03 Uhr
Erstelle ein Programm, welches in einem String die Kleinbuchstaben in Großbuchstaben umwandelt und andersherum. Zahlen und Zusatzzeichen sollen nicht beachtet werden
#2
von dirk (150 Punkte)
- 05.12.2017 um 13:16 Uhr
#include <cstdlib> // EXIT_SUCCESS
#include <locale>
#include <string>
#include <iostream>
#include <algorithm>
// Kodierung des Quelltextes: utf8
// #178 - Groß- und Kleinuchstaben (Anfänger - C++ von MeLThRoX - 22.08.2017 um 19:03 Uhr)
// Erstelle ein Programm, welches in einem String die Kleinbuchstaben in Großbuchstaben
// umwandelt und andersherum. Zahlen und Zusatzzeichen sollen nicht beachtet werden.
// Keine Ahnung ob der String vorgegeben oder eingelesen werden soll. Hier eine Version
// mit einlesen bis zur Eingabe einer Leerzeile (oder eof).
//
// Diese Version *sollte* die locale-Einstellung beachten. Unter Linux funzt es halbwegs,
// das kleine 'sz' (ß) wird aber nicht in ein großes verwandelt, umgekehrt schon.
// Abhängig von Compiler, libstdc++ und Zeichenkodierung des jeweiligen Systems
// Hier:
// openSuse Tumbleweed
// g++ (SUSE Linux) 7.2.1 20171020 [gcc-7-branch revision 253932]
// g++ -Wpedantic -Wall -Wextra -std=c++17 klein_grossbuchstaben.cpp -o klein_grossbuchstaben
//
// Ausgabe:
// # ./klein_grossbuchstaben
// Prgramm zum umwandeln von Klein- in Großbuchstaben und umgekehrt,
// abhängig von der Landeseinstellung des Rechners.
// Text eingeben (leere Eingabe zum beenden): ABC 123 öäüß +- ÖÄÜẞ abc
// Umgewandelter Text is: abc 123 ÖÄÜß +- öäüß ABC
// Text eingeben (leere Eingabe zum beenden):
int main() {
using namespace std;
const auto myLocale = locale(""); // Locale aus den Benutzereinstellung
locale::global( myLocale );
wcout << L"Prgramm zum umwandeln von Klein- in Großbuchstaben und umgekehrt,\n"
L"abhängig von der Landeseinstellung des Rechners.\n";
for( wstring text; wcout << "Text eingeben (leere Eingabe zum beenden): ", getline( wcin, text), text != L""; )
{
transform( text.begin(), text.end(), text.begin(),
[&myLocale](wchar_t c) { return ( islower(c, myLocale) ? std::toupper(c, myLocale) : std::tolower(c, myLocale)); } );
wcout << " Umgewandelter Text is: " << text << "\n";
}
return EXIT_SUCCESS;
}
Kommentare:
Für diese Lösung gibt es noch keinen Kommentar
Seite 1 von 0
1
