Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <iostream> using namespace std; #include <stdarg.h> void meineFunktion(int Anzahl, ... ) { va_list params; // Zugriffshandle für Parameter int intpar; // Parameterinhalt va_start(params, Anzahl); // Zugriff vorbereiten // Durchlaufe alle Parameter (steht in Anzahl) for (int i=0; i<Anzahl; i++) { intpar = va_arg(params, int); // hole den Parameter cout << intpar << endl; // zeige ihn an } cout << "---" << endl; va_end(params); // Zugriff abschließen } int main() { // Tests der Funktion mit unterschiedlichen Parametern meineFunktion(2, 5, 2); meineFunktion(0); meineFunktion(4, 5, 2, 0, 3); } |
Alter Hase
C-/C++-Quelltext |
|
1 2 |
int res = getchar(); printf("character was: %c", res); |
Zitat von »"FLO2"«
Hi
Ich schreibe gerade eine Funktion bei der der Nutzer (der Funktion) unendlich viele z.B. Variablen übergeben kann. Also ist mir beim Schreiben der Funktion noch unklar wie viele das sein werden.
So wie bei printf!
Wie funktioniert sowas denn?
Danke im Voraus!
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
template<typename P1> void foo( const P1& p1 ) { } template<typename P1, typename P2> void foo( const P1& p1, const P2& p2 ) { } template<typename P1, typename P2, typename P3> void foo( const P1& p1, const P2& p2, const P3& p3 ) { } // usw... |
Zitat von »"K-Bal"«
Wie wäre es mit einem STL-Container als Parameter?
C-/C++-Quelltext |
|
1 2 |
int res = getchar (); printf ("character was: %i", res); |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
#include <iostream> #include <windows.h> #include <stdarg.h> using namespace std; void mwrite (char Text[1000], int Dauer, const char Formatiert, ...) { if (Dauer > 0) { Sleep(Dauer); } va_list params; int char_paras; va_start (params, Formatiert); for (int i=0; i<Formatiert; i++) { char_paras = va_arg(params, const char); if (i == 0) { if (Formatiert == 'n') cout << Text << endl; else if (Formatiert == 't') cout << Text << "\t"; else if (Formatiert == 'v') cout << Text << "\v"; else if (Formatiert == 'r') cout << Text << "\r"; else if (Formatiert == 'b') cout << Text << "\b"; else if (Formatiert == '"') cout << Text << "\""; else if (Formatiert == '\\') cout << Text << "\\"; } // if else if (i < 0) { if (Formatiert == 'n') cout << "\n"; else if (Formatiert == 't') cout << "\t"; else if (Formatiert == 'v') cout << "\v"; else if (Formatiert == 'r') cout << "\r"; else if (Formatiert == 'b') cout << "\b"; else if (Formatiert == '"') cout << "\""; else if (Formatiert == '\\') cout << "\\"; } } } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 |
#include "Ausgabe.hpp" #include <iostream> int main () { cout << "Das war cout" << endl; mwrite ("Hello World", 1000, 'n', 'n'); cout << "wieder cout" << endl; return 0; } |
Zitat von »"FLO2"«
@David_pb
Das ist doch umständlich. :?
Werbeanzeige