Struct

Bismark

Erfahrenes Mitglied
Hallo Leute,
ich habe ein Progarmm geschrieben, dass die Daten einiger Biathlonläufer aufnimt und ausgibt.
Hier der Quelltext:
Code:
#include <conio.h>
#include <iostream>
#include <string>
#include <iomanip>
#include "conioex.h"

using namespace std;



const int pers = 3;

struct mensch						// Definition Struckt
{
	string nachname;
	string vorname;
	char gesch;
	int sta_nr;
	float schwi_nr;
	float rad_nr;
	float lauf_nr;
	float gesamt_nr;
};

mensch liste [pers];


void eingabe(mensch liste[pers]);		//Fkt. Eingabe Prototyp
void ausgabe(mensch liste[pers]);



int main()												   // #### Hauptprogramm #### 
{	
	char meüwahl;

	do
	{
	system("cls");
      
			
			cout<<"<1> Eingabe der Personendaten"<<endl;
			
			cout<<"<2> Ausgabe des Datensatzes"<<endl;
			
			cout<<"<3> Eingabe der Schwimmzeit"<<endl;
			
			cout<<"<4> Eingabe der Radzeit"<<endl;
			
			cout<<"<5> Eingabe der Laufzeit"<<endl;
			
			cout<<"<#> Programm Ende"<<endl<<endl;
			
			cout<<"ihre Wahl ==> ";
			cin>>meüwahl;

			switch (meüwahl)
			{
			 case '1': eingabe(liste);break;
			 case '2': ausgabe(liste);break;
			
		  }
		}
	 while (meüwahl != '#' && meüwahl < 1 && meüwahl > 5);
	

 system("PAUSE");
 return 0;
}



void eingabe(mensch liste[pers])		//Fkt. Definition 
{
	int x = 0;
	char antwort;
	do
	{

			cout<<"Geben Sie den Nachname ein: ";
			cin>>liste[x].nachname;

			cout<<"Geben Sie den Vorname ein: ";
			cin>>liste[x].vorname;

			cout<<"Geben Sie den Geschlecht ein (m/w: ";
			cin>>liste[x].gesch;
			
			cout<<"Geben Sie die Startnr. ein: ";
			cin>>liste[x].sta_nr;

			liste[x].schwi_nr = 0;

			liste[x].rad_nr = 0;
			
			liste[x].lauf_nr = 0;

			liste[x].gesamt_nr = 0;
		  

			cout<<endl<<endl;
		  system("cls");
	
		x++;

	}
 while (x == pers);


}											// #### Ende Fkt. eingabe



void ausgabe(mensch liste[pers])		//Fkt. augabe
{
	int y = 0;
	string startnr_prüf;
	
	cout<<"Geben Sie die Startnummer ein";
    cin>>startnr_prüf;
	
	do
	{	
		if (startnr_prüf == liste[y].sta_nr)
		{
			cout<<liste[y].nachname;

			cout<<liste[y].vorname;

			cout<<liste[y].gesch;

			cout<<liste[y].sta_nr;

			cout<<liste[y].schwi_nr;

			cout<<liste[y].rad_nr;

			cout<<liste[y].lauf_nr;

			cout<<liste[y].gesamt_nr;
		}
				
		
		y++;
	} 
	while (y < pers);
}

Bei mir kommt als Fehler folgendes (die stelle ist Rot markiert):

error C2678: Binärer Operator '==': Es konnte kein Operator gefunden werden, der einen linksseitigen Operanden vom Typ 'std::string' akzeptiert (oder keine geeignete Konvertierung möglich)



Ich bitte um Hilfe
 
Zuletzt bearbeitet:
Hallo,

"startnr_prüf" ist vom Typ "string" und "mensch.sta_nr" vom Typ "int". Das passt natürlich nicht zusammen. Eines von beiden müsstest du konvertieren, z.B:
C++:
if ( atoi(startnr_prüf.c_str()) == liste[y].sta_nr)
{
    ...
}
Übrigens ist die Idee, Umlaute bei Variablenbezeichnungen zu verwenden, eher weniger gut (potentielle Portabilitätsprobleme).

Gruß
MCoder
 
ist ja nicht so das es container typen im Standard gibt oder das struct im Prinzip class in C++ entspricht und von d.h. auch nen Konstruktor überladen bekommen kann.

Das
C++:
while (meüwahl != '#' && meüwahl < 1 && meüwahl > 5);
Schwachsin ist, weil du nach dem Zeichen, das der Dezimalzahl 1 bzw. 5 im ASCII-Code zugewiesen ist, Vergleiche anstellst.
 
Zurück