Du bist nicht angemeldet.

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

Sheddex

unregistriert

11

29.02.2008, 19:11

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main() 
{ 
    CErstellen array[20];
    std::stringstream temp_name;

    for(unsigned int i = 0; i < 20; ++i)
    {
      //Vorhandene Daten aus dem Stream entfernen

      temp_name.str("");
      temp_name.clear();

      //Gewünschten String zusammensetzen

      temp_name<< "C:\\" << i+1 << ".bat";

      //Eintragen

      array[i].dname = temp_name.str();
      array[i].Schreiben();
    }
}

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

12

02.03.2008, 13:04

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
static inline const char* va( const char* fmt, ... )
{
    static char buffer[ 1024 ] = { 0 };
    va_list argptr;

    va_start( argptr, fmt );
    vsprintf( buffer, fmt, argptr );
    va_end( argptr );
   
    return buffer;
}


Ist als Beispielfunktion nicht so ideal. Wir dir vielleicht auffällt steht in der Parameterliste "...". Das sind Parameterlisten mit variabler Länge. Man kann also beliebig viele Argumente übergeben. Diese va_* Aufrufe ermöglichen das "Auslesen" der übergebenen Parameter. Reicht das als Erklärung?
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

02.03.2008, 17:55

Oh, da war ja noch eine Erklärung gewünscht!
Aber egal, die Funktion hat ja nicht wirklich was mit der Problemlösung selbst zu tun! :)

@Shade: Was soll daran Übersichtlicher sein?
@D13_Dreinig

Sheddex

unregistriert

14

02.03.2008, 20:24

Ich persönlich finde, dass dem so ist.
Desweiteren gibt es bei dir die Beschränkung auf 1024 Zeichen.

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

15

02.03.2008, 20:46

Zitat von »"Shade"«

Ich persönlich finde, dass dem so ist.
Desweiteren gibt es bei dir die Beschränkung auf 1024 Zeichen.


Dafür gibts bei dir einen großen Overhead, langsamere Ausführung, Heap allokation, beschränkung auf weniger als 1024 Byte (wenn mehr benötigt werden weitere Allokationen fällig), eine unleserliche Syntax, ...
@D13_Dreinig

16

03.03.2008, 19:08

Zitat

Dafür gibts bei dir einen großen Overhead, langsamere Ausführung, Heap allokation, beschränkung auf weniger als 1024 Byte (wenn mehr benötigt werden weitere Allokationen fällig), eine unleserliche Syntax, ...


Du meinst doch sicher Nox und nicht Shade...
Das Böse ist des Menschensbeste Kraft - Friedrich Nietzsche

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

03.03.2008, 19:28

Zitat von »"Theprogrammer"«

Zitat

Dafür gibts bei dir einen großen Overhead, langsamere Ausführung, Heap allokation, beschränkung auf weniger als 1024 Byte (wenn mehr benötigt werden weitere Allokationen fällig), eine unleserliche Syntax, ...


Du meinst doch sicher Nox und nicht Shade...


Nein? Wie kommst du darauf? :)
@D13_Dreinig

18

06.03.2008, 21:39

Zitat von »"David_pb"«

Wieso auf den Heap? Ein normales Array tuts doch auch:

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
// ...


static inline const char* va( const char* fmt, ... )
{
    static char buffer[ 1024 ] = { 0 };
    va_list argptr;

    va_start( argptr, fmt );
    vsprintf( buffer, fmt, argptr );
    va_end( argptr );
    
    return buffer;
}

class CErstellen
{
public:
    std::string dname;

    void Schreiben()
    {
        printf( "%s\n", dname.c_str() );
    }

};


int main()
{
    CErstellen foo[ 20 ];

    for ( int i = 0; i < 20; ++i )
        foo[ i ].dname = va( "c:\\%d.bat", i+1 );

    for ( int i = 0; i < 20; ++i )
        foo[ i ].Schreiben();

    _getch();
}




@quellcode:
des prog des schreit nur welche dateien erstellt werden sollten, erstellen tut es diese nicht weil in der Klasse nur printf steht, was muss ich machen das die dateien auch wirklich erstellt werden?

19

06.03.2008, 21:41

Meine güte. .. vergess es einfac h... (std::ofstream, Header: <fstream>)
Devil Entertainment :: Your education is our inspiration
Der Spieleprogrammierer :: Community Magazin
Merlin - A Legend awakes :: You are a dedicated C++ (DirectX) programmer and you have ability to work in a team? Contact us!
Siedler II.5 RttR :: The old settlers-style is comming back!

Also known as (D)Evil

Werbeanzeige