ma[i].vorname == ""; was mach ich falsch?
-
Hallo!
Ne kleine frage:
ich will abfragen ob in
ma[i].vorname
etwas drinn steht.
.vorname
ist nen char (soweit ich weiss
)
Nur irgendwie will er nicht...
Ich lade aus einer datei in die einzelnen arrays, und wenn ich auslese sagt er mir
ma[i].vorname == ""
aber das kann ich nicht abfragen... also mit
if (ma[i].vorname == "")
Was mach ich falsch?
Danke
Max
-
Gib doch mal die Typdefinitionen an, dann mußt du nicht raten, was es ist
Zum Thema:
char können nur mit anderen char's verglichen werden, aber nicht mit String-Literalen (und char-Konstanten schreibt man mit 'x')
char* vergleichst du mit strcmp()PS: Zum Test, ob du einen Leerstring hast, eignet sich auch:
if(ma[i].vorname[0]=='\0') cout<<"kein Name gegeben\n";
PPS: Wenn es möglich ist, verwende lieber std::string oder AnsiString statt char*.
-
Hi!
Ist es denn besser Ansistring anstatt char zu nehmen? is für die schule das programm, und wir haben so nen ultra-programmierer als lehrer
Hab dank dir jetzt auch ne lösung:
if (Ansistring(ma[i].vorname == ""))
Danke
Max
-
Das ist keine Lösung, sondern ziemlicher Unsinn. Bitte gib mal die Deklaration deiner Klasse (oder struct) an.
-
struct person { char name[20], vorname[20], handy[20]; int personalnummer, id; float gehalt; } ma[50] ;
Oder is des schwachsinn?
Gruß
Max
-
Dagegen ist erstmal nichts zu sagen. Allerdings würde die Verwendung von std::string oder AnsiString statt char* die Arbeit vereinfachen.
char* vergleicht man mir strcmp. Deine Frage müsste also so lauten.if (strcmp(ma[i].vorname,"")==0)
Eine kurze Erläuterung was du da gemacht hast.
Du vergleichst einen Pointer auf char mit einem leeren Stringliteral, wandelst dann das Ergebnis (true oder false) in einen AnsiString und übergibst diesen String dann an dein if.
-
Noch eine alternative Form
struct person { AnsiString name, vorname, handy; AnsiString personalnummer, id; double gehalt; }; person ma[50];
AnsiStrings kann man mit == vergleichen. Mit Is_Empty() kann man testen ob der String leer ist. Die Personalnummer und die id sollten eher ein String sein, da man damit ja eigentlich nicht rechnen will und so kein Problem mit führenden Nullen hat.