Crysis nerd
Freizeitschrauber(in)
Moin,
ich hatte vor einiger Zeit mal eine Mini-Bibliothek angefangen. Mein eigentlicher Gedanke dabei war, einfache Funktionen zum einlesen von Daten von der Konsole zu ermöglichen. Ich hab zu der Zeit einen kleinen C++ Crashkurs geleitet und wollte den Teilnehmern da etwas erleichtern. Da ich aber sowieso Spaß daran hatte, hab ich noch ein paar extra Funktionen eingebaut. Grundsätzlich bietet meine Bibliothek 3 Features:
Ich dachte mir, da ich das hier sowieso rumfliegen habe, stell ich es euch mal vor, eventuell interessiert es ja jemanden.
Long story, hier ist Code:
Die Ausgabe:
Oder in Farbe (ist ja nicht ganz unwichtig ):
http://sebi707.de/downloads/files/0003785/output.png
Da der 3. Punkt in meiner Liste (nämlich ExplainType) nicht funktioniert ohne C++11 features, aber ich die Bibliothek auch ohne C++11 nutzen wollte, habe ich die zusätzlichen Features mit dem #define IOA_CPP11 optional gemacht. Die C++ 11 Features kann man nicht unter VisualStudio (eventuell unter VS13 RC) nutzen, weil die Variadic templates und ein paar anderes Zeugs nutzen. Unter clang++ und g++ sollte es beides compilieren, da ja jetzt beide language-complete sind (glaub ich...).
Ähm was gibt es noch zu sagen... Alles ist in der hpp Datei, also keine eigenen Source Dateien (wäre für sowas kleines auch doof). Es gibt noch ein paar kleinere Bugs (vorallem im typetraits rund um ExplainType). Kompatibilität endet auch irgendwo. Nicht alle Linux Terminals unterstützen Farben (bei denen die es nicht tun, würde wohl Matsche rauskommen). Sonst hab ich auch versucht die so klar zu strukturiert wie möglich zu halten, alle Deklarationen an den Anfang zu packen. Achja, zurzeit ist noch die Color Klasse ziemlich sinnlos, weil beide Konsolen eh nur 8 unterschiedliche Farben ausgeben können. Wollte es aber erstmal so allgemein wie möglich halten.
Joa das wars erstmal. Wenn ihr wollte, könnt ihr sie gerne nutzen, verändern usw, aber wäre cool wenn ihr meinen Namen nicht daraus löscht ^^ http://sebi707.de/downloads/files/0003792/InOutAlgo.hpp (kleines Update)
Sonst, wenn ihr Anmerkungen habt oder Bugs findet, haut raus. Wollte wie gesagt nur mal vorstellen, falls es einer interessant findet.
LG Lukas
ich hatte vor einiger Zeit mal eine Mini-Bibliothek angefangen. Mein eigentlicher Gedanke dabei war, einfache Funktionen zum einlesen von Daten von der Konsole zu ermöglichen. Ich hab zu der Zeit einen kleinen C++ Crashkurs geleitet und wollte den Teilnehmern da etwas erleichtern. Da ich aber sowieso Spaß daran hatte, hab ich noch ein paar extra Funktionen eingebaut. Grundsätzlich bietet meine Bibliothek 3 Features:
- Funktionen zum einlesen von std::cin (für beliebige Typen, auch Arrays)
- Einfache Ausgabe von Farbigem Text auf der Konsole (in Windows sowie mehreren Linux Distributionen)
- Kranke Typetraits mit einer Funktion, die einen Typ einer Variable in englisch erklärt
Ich dachte mir, da ich das hier sowieso rumfliegen habe, stell ich es euch mal vor, eventuell interessiert es ja jemanden.
Long story, hier ist Code:
Code:
#define IOA_CPP11
#include "InOutAlgo.hpp"
using namespace ioa;
#include <iostream>
using namespace std;
int main()
{
cout << "Hi du " << FG_GREEN << "grüner "
<< FG_BLUE << "Schlumpf." << BG_RED
<< "Willst du einen Keks?" << C_RESET_FG
<< " Ok dann nicht :(" << C_RESET << endl;
const char* blub = "hi";
ExplainType(blub);
ExplainType<int const * const * [][3]>();
double d = GetInput<double>();
int i[2];
GetInput(i);
return 0;
}
Hi du grüner Schlumpf.Willst du einen Keks? Ok dann nicht
T is a pointer to a const char
T is an array of an array with size '3' of a pointer to a const pointer to a const int
Bitte ein double eingeben: 3.14
Bitte 2 int eingeben.
int (1/2) eingeben: 42
int (2/2) eingeben: 1337
T is a pointer to a const char
T is an array of an array with size '3' of a pointer to a const pointer to a const int
Bitte ein double eingeben: 3.14
Bitte 2 int eingeben.
int (1/2) eingeben: 42
int (2/2) eingeben: 1337
http://sebi707.de/downloads/files/0003785/output.png
Da der 3. Punkt in meiner Liste (nämlich ExplainType) nicht funktioniert ohne C++11 features, aber ich die Bibliothek auch ohne C++11 nutzen wollte, habe ich die zusätzlichen Features mit dem #define IOA_CPP11 optional gemacht. Die C++ 11 Features kann man nicht unter VisualStudio (eventuell unter VS13 RC) nutzen, weil die Variadic templates und ein paar anderes Zeugs nutzen. Unter clang++ und g++ sollte es beides compilieren, da ja jetzt beide language-complete sind (glaub ich...).
Ähm was gibt es noch zu sagen... Alles ist in der hpp Datei, also keine eigenen Source Dateien (wäre für sowas kleines auch doof). Es gibt noch ein paar kleinere Bugs (vorallem im typetraits rund um ExplainType). Kompatibilität endet auch irgendwo. Nicht alle Linux Terminals unterstützen Farben (bei denen die es nicht tun, würde wohl Matsche rauskommen). Sonst hab ich auch versucht die so klar zu strukturiert wie möglich zu halten, alle Deklarationen an den Anfang zu packen. Achja, zurzeit ist noch die Color Klasse ziemlich sinnlos, weil beide Konsolen eh nur 8 unterschiedliche Farben ausgeben können. Wollte es aber erstmal so allgemein wie möglich halten.
Joa das wars erstmal. Wenn ihr wollte, könnt ihr sie gerne nutzen, verändern usw, aber wäre cool wenn ihr meinen Namen nicht daraus löscht ^^ http://sebi707.de/downloads/files/0003792/InOutAlgo.hpp (kleines Update)
Sonst, wenn ihr Anmerkungen habt oder Bugs findet, haut raus. Wollte wie gesagt nur mal vorstellen, falls es einer interessant findet.
LG Lukas
Zuletzt bearbeitet: