Struct durchlaufen..

Naja...
Ich will sowas machen wie z.B in BlitzBasic.
Dort kann man folgendes machen.

Code:
For Person.person = Each Person
    Print person\name
Next
Ich weiß jetzt nicht obs richtig ist. (Hab lange nicht mit BlitzBasic programmiert)


Sowas ähnliches muss doch auch in C++ möglich sein.



KHORN
 
mit deinem Code kann ich leider nichts anfangen ;)
ich kenne BlitzBasic nicht.

Beschreib doch einfach mal was du vorhast :)
und was das Programm können soll.

MfG Turri
 
Ok :)
Es soll der Server für ein Netzwerkspiel sein.
Dort gibt es ein Struct "Player"
Wenn sich ein Spieler einloggt dann wird eine neue Var von "Player" erstellt.
Und wenn man im Server den Befehl "list" eingibt, sollen alle Spieler aufgelistet werden.
 
ahh, dann mach extra funktionen zum einfügen und anzeigen :)

Code:
#include <iostream>
#include <conio.h>
using namespace std;

struct Person
{
       char** name;
       int anz;
};

void init(Person p)
{
     p.anz = 0;
}

void einfuegen(char* name, Person p)
{
    p.name[anz] = name;
    p.anz++;
}

char* anzeigen(int index)
{
    return p.name[i];
}

int main()
{
    Person p;
    init(p);
    char* name1;
    cin >> name1;
    einfuegen(name1, p);
    for(int i = 0 ; i < p.anz ; i++)
    {
          cout << anzeigen(i);
    }
    getch();
    return 0;
}
Ist quick and dirty geproggt und nicht getestet,
aber die Art und Weise müsste klar sein ;)

MfG Turri
 
Code:
    char* name1;
    cin >> name1
Das kann nicht gut gehen! Zur Speicherung des Namens müsste man schon entsprechend Speicher allokieren.

Eine andere Möglichkeit (aber nicht unbedingt die beste) wäre die Verwendung der STL-Klasse list:
Code:
#include <list>
#include <iostream>

using namespace std;

struct PERSON {
	string name;
};

int main(int argc, char *argv[])
{
	// Liste der Personen
	list<PERSON> personen;
	
	/***
	* Personen hinzufügen
	***/
	
	while (1) {
		PERSON p;
		
		cout << "Name (Beenden mit Strg+Z): ";
		cin >> p.name;
		
		if (p.name.length() == 0) {
			// keine Eingabe <-> Strg+Z => Abbrechen
			break;
		}
		
		// Person an das Ende der Liste anfügen
		personen.push_back(p);
	}
	
		
	/***
	* Personen auflisten
	***/
	
	cout << endl << "Personenliste" << endl;
	cout <<         "~~~~~~~~~~~~~" << endl; 
	
	// Iterator zum Durchlaufen der Liste	
	list<PERSON>::iterator it = personen.begin();
	
	// Durchlaufe die Liste der Personen bis zum Ende
	while (it != personen.end()) {
		// Ausgabe des Namens
		cout << (*it).name << endl;
		// Weiter zur nächsten Person
		it++;
	}
	
	return 0;
}
 
Danke, das ist natürlich eine Lösung ^^

@ Matthias Reitinger
Könntest du vielleicht erklären, wie das mit der Liste funktioniert ?

Danke

EDIT
lol ^^
Hab wohl zu lange für den Post gebraucht^^

EDIT2
Danke funktioniert :D


MfG
KHORN
 
Zuletzt bearbeitet:
Zurück