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

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

11

07.08.2007, 10:41

Sagmal, hast du dir den Code auchmal angeschaut? Jeder Name wird in einem vector hinterlegt der also ganz viele string-Objekte beinhaltet. D.h. in diesem vector hast du jeden Namen der von dem Programm im Verzeichnis gefunden wurde und kannst jeden Namen auch wieder aus diesem vector auslesen.
Die Ausgabe in die Konsole geschieht übrigens über eine Iteration über den Inhalt des vectors! Was so viel bedeutet das der vector tatsächlich sämtliche Namen die in diesem Verzeichnis vorkommen beinhaltet.

Hoffentlich hast dus jetzt kapiert... :roll:
@D13_Dreinig

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

12

07.08.2007, 10:50

Ups , hatte irgendwie verraft das ein Vector ja String Objecte enthält und dachte er hat meine Frage falsch verstanden und liefert mir nur wieder einen anderen Code zum auslesen , Tut mir Leid , missverständniss .. ich bedanke mich bei allen Thx



Edit :

Hatte ich mich vielleicht doch nicht geirrt ?

directory_list.push_back( entry->d_name );

hier schreibt er doch das gesamte verzeichnis in einen string des Vectors
d.h nicht in einzelne ... oder verstehe ich schon wieder was falsch




MFG Toa

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

13

07.08.2007, 11:07

Das sind die einzelnen Namen der Einträge.
@D13_Dreinig

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

14

07.08.2007, 11:11

In einem String des Vectors nicht ? wenn man es in einzelne Schreibt müsste man doch sowas machen :

directory_list.push_back(1);
directory_list.push_back(2);

usw und da reinschreiben ,... steh grad bissle aufm Schlauch helft mir wenn ich was falsch verstehe ^^

storage

Treue Seele

Beiträge: 138

Wohnort: Bad Salzungen

  • Private Nachricht senden

15

07.08.2007, 11:22

Nein wenn du in die klammern (2) schreibt versucht er die zahl 2 zu deiner Liste hinzu zufügen.Das push_back (entry->d_name) verweisst nur auf den namen der Files im Ordner und dieser wird dann auch zu Liste hinzugefügt,solange bis er alle files des Ordners durchlaufen hat.Bei jeden durchlauf wird der string für sich gespeichert und hat einen index.

Da du aber nicht weißt wie der index von den ist,weil du ja flexibel sein willst und nicht vorher gezählt hast wie viele files es sind wird am ende eine eine Funktion der STL genutzt um alles was in der Liste gespeichert wurde auszulesen.

Ich hoffe mal das stimmt so und habe es nicht zu komisch oder unpassend erklärt.

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

16

07.08.2007, 11:24

wie würde das ganze aussehen wenn ich eine feste anzahl von 6 strings ( file names) nur zulassen würde ? also 6 erzeugen wie ichs oben gemacht hab und wie schreibt man in einzelne rein ? Ich weiß bin sehr wissbegierig xD sorry^^ , hoffe ich nerve nicht

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

17

07.08.2007, 11:39

Sieht genauso aus. In C++ nutzt man die Standardkontainer und keine Arrays.
@D13_Dreinig

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

18

07.08.2007, 11:48

WIe hab ich denn dann zugriff auf einzelne strings des Vectors , ich möchte zb jetzt nur den ersten String ausgeben der im Vector ist ?

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

19

07.08.2007, 11:49

Über dem [] Operator oder die Methode at().

Also:

C-/C++-Quelltext

1
2
3
4
5
// entweder

std::cout << directory_list[ 0 ];

// oder

std::cout <<  directory_list.at( 0 );
@D13_Dreinig

Toa

Alter Hase

  • »Toa« ist der Autor dieses Themas

Beiträge: 944

Beruf: Research associate

  • Private Nachricht senden

20

07.08.2007, 11:58

*selbst verhau* , sorry hat sich geklärt danke ^^

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
system("cls");
    string dateiname;

    DIR* handle;
    struct dirent* entry;

    vector< string > directory_list;

    handle = opendir( "Saves\\" );

    if ( !handle )
    {
        cerr << "Error: Verzeichnis konnte nicht gefunden werden" << std::endl;
        return -1;
    }


    while ( 0 != (entry = readdir( handle ) ))
    {

        if(strcmp(entry->d_name, ".") == 0 ||
        strcmp(entry->d_name, "..") == 0)
        continue;
        directory_list.push_back( entry->d_name );
    }

    closedir( handle );
    getline(20); colorcout('1',"Delete Accounts"); getline(20);
    cout << directory_list[ 0 ] << "\n";
    cout << directory_list[ 1 ]<< "\n";
    cout << directory_list[ 2 ]<< "\n";
    cout << directory_list[ 3 ]<< "\n";
    cout << directory_list[ 4 ]<< "\n";


Konsole.exe hat ein Problem festgestellt und muss beendet werden, warum das aufeinma ?

EDIT :

Okay ich weiß was Probleme macht er will 5 files ausgeben hat aber nur 2 beschrieben und stellt dann ein Problem fest , weiß jemand wie ich das beheben kann ? Denn das Problem ist das ich mid. eine cout liste von 5 haben muss egal ob es sie gibt oder nicht , also eine überprüfung wie if directory_list[ 0 ] beschrieben cout .. usw

Also damits verständlicher wird

C-/C++-Quelltext

1
if (directory_list.find(0)==directory_list.end())

klappt das so ?

nur sagt compiler da :

Quellcode

1
clas std::vector<std::string , std::allcator<std::string> <' has no member named 'find'

Werbeanzeige