strcpy verursacht Programmabsturz // Benutze eine char*
-
@Nexus:
Es geht ihm eher um einen caseinsensitiven Vergleich.
-
bei == wird da nicht auf gross und kleinschreibung geachtet??? Ihc meine schon.... sonst nehme ich das mit Kusshand... alleine weil es sich besser und verständlicher lesen lässt.....
-
Jud4s schrieb:
bei == wird da nicht auf gross und kleinschreibung geachtet??? Ihc meine schon.... sonst nehme ich das mit Kusshand... alleine weil es sich besser und verständlicher lesen lässt.....
So ist es.
Aber zur Not geht ja noch:if ( !stricmp( axt.c_str(), "axt" ) ) { }
-
David_pb schrieb:
@Nexus:
Es geht ihm eher um einen caseinsensitiven Vergleich.
Sorry, stimmt ja. Irgendwie scheine ich heute nicht ganz bei der Sache zu sein

David_pb schrieb:
So ist es.
Aber zur Not geht ja noch:if ( !stricmp( axt.c_str(), "axt" ) ) { }Du solltest einfach bei Umlauten etc. aufpassen. Ich denke, die werden nicht automatisch umgewandelt bzw case-insenstive verglichen. Falls du die auch noch berücksichtigen willst, wäre eine eigene Funktion schon angebracht.
Bei der "Axt" geht ja noch alles gut, ich wollte das einfach mal sagen; nicht dass du später deswegen Probleme bekommst.
-
thx.... dieses Problem ist gelöst..... thx @ all
aber nun habe ich ein neues.....

und um dafür kein neues Thema aufzumachen poste ich es mal hier^^:diese Objekterstellung : player enemie(90,140,"Magus","Magier",1,1,8,45,false,"Ja","Schwert")
soll diesen Konstruktor aufrufen:player::player(int hp, int mp ,string fn, string cc, int ccv, int AnzWa, int SchaWa, int trefwahr, bool zh, string schild, string waffe): Hp ( hp ), MaxHp ( mp ), Mp ( 100 ), MaxMp ( 100 ), charclass ( cc ), name ( fn ), charclassvari ( ccv ), playersown (AnzWa,SchaWa,trefwahr,zh,schild,waffe )playersown ist wiederum eine Objekt einer Klasse ^^ mit dem Konstruktor
weaponset::weaponset(int AnzWa, int SchaWa, int trefwahr, bool zh, string schild, string waffe): AnzahlWaffen ( AnzWa ), SchadenProWaffe ( SchaWa ), Zweihandwaffe ( zh ), treffwarscheinlichkeit ( trefwahr ), schildj ( schild ), waffe ( waffe )nu kommt aber das Problem das der Compiler nicht erkennt das "Magus" und die ganzen anderen Zeichenketten strings sind.... er denkt das wären chars... -.- ... und ich habe keinen Blassen dunst wie ich ihm verdeutlichen soll das das strings sind.... (sind die Quellcodes von nöten oder soll ich sie der übersichtshalber wieder löschen?)
PS: ich weiss nciht ob es verständlich war....
playersown gehört zu Klasse weaponset
und enemie zur Klasse playeralso playersown constructor <----- enemie.playersown.weaponset(....)
-
Er sollte dir das schon in Strings konvertieren. Du hast schon <string> inkludiert, oder? Und du hast den Namespace std auch bekannt gemacht, oder?
Ansonsten zeig mal den Fehler her. Das ist sonst reines raten.

-
Der Parametertyp ist eindeutig (du verwendest ja nur einen Konstruktor, oder?), es gibt keinen Grund dazu, "Magus" und die anderen Zeichenketten als Char-Arrays zu erkennen. Wieso meinst du, sie werden so erkannt? Könntest du vielleicht die Fehlermeldung posten?
Im Notfall übergibst du eben z.B.
string("Magnus")statt"Magnus". Doch ich denke, der Fehler liegt woanders.
-
Fehlermeldung -> no matching function for call to `player::player(int, int, const char[6], const char[7], int, int, int, int, bool, const char[3], const char[8])'
canidates are: player::player(std::string, std::string, int, int, int, int, bool, std::string, std::string)
das ist die Fehlermeldung... sprich er erkennt die strings als chars und fnidest somit den constructor nicht....
-
Ich würde sagen, dass der Fehler immernoch wo anderst liegt.
canidates are: player::player(std::string, std::string, int, int, int, int, bool, std::string, std::string)Macht für mich keinen Sinn, da du ja (int, int .. ) am Anfang hast.. Zeig mal den genauen Aufruf und die Deklaration.
-
ohh mann.. schande bin ich bräsig... das ist der Fehler es funktioniert nun.... vielne Dank^^
-
Jud4s schrieb:
ohh mann.. schande bin ich bräsig... das ist der Fehler es funktioniert nun.... vielne Dank^^
Langsam werde ich richtig gut im raten..

-
Nexus schrieb:
ja schrieb:
std::string kannst du in die tonne kloppen.
Wieder einmal ein sehr hilfreicher Beitrag. Wenn du wenigstens Argumente hättest...

Weißt du das immer noch nicht. Jede zweite Methode (replaceAll, compareIgnoreCase, toUppper für den ganzen String...) muss von jedem Programmierer immer wieder neu implementiert werden. Nicht UNI-Code fähig...
-
Mir ging es nur darum, dass dein Beitrag stark nach Spam aussieht und dessen Inhalt so niemandem hilft. Hättest du es begründet, dann hätte ich auch kein Problem damit gehabt.