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

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

11

05.09.2013, 09:15

mein c++ ist zwar schon recht eingerostet, aber geht das nicht einfacher mit dem .compare operator?
also:

std:string string1("something");
std:string string2("something different");

string1.compare(string2) -> wenn das ergebnis 0 ist, dann sind die beiden ident

Hast du Java Hintergrund?

Ich will ja nichts sagen, aber ich habe einen Java-Hintergrund und hätte dennoch eher darauf getippt, dass der Vergleichsoperator für std::string überladen wurde. ;)
(Sollte ich erwähnen, dass ich auch C#- und Python-Hintergrund besitze?)
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

12

05.09.2013, 09:29

mein c++ ist zwar schon recht eingerostet, aber geht das nicht einfacher mit dem .compare operator?
also:

std:string string1("something");
std:string string2("something different");

string1.compare(string2) -> wenn das ergebnis 0 ist, dann sind die beiden ident

Hast du Java Hintergrund?

Ich will ja nichts sagen, aber ich habe einen Java-Hintergrund und hätte dennoch eher darauf getippt, dass der Vergleichsoperator für std::string überladen wurde. ;)
(Sollte ich erwähnen, dass ich auch C#- und Python-Hintergrund besitze?)

Man könnte es auch anders formulieren: Hat er in letzter Zeit zu häufig Java verwendet und daher die Möglichkeiten von Operator Overloading weitgehend verdrängt?
Ist pure Neugierde.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

13

06.09.2013, 09:48

Wenn du std::string benutzt, kannst du auch einfach == verwenden... ;)

Das ist gut, aber ich weiß leider nicht wie man das benutzt also Datentyp, Parameter etc. Wo könnte ich das denn evtl. nachlesen? Wegen den Zeigern nochmal, sollen die sich auf das Array oder direkt auf den string beziehen, oder ist das dasselbe ?

Danke für die vielen Antworten!! :)

Zitat

Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

14

06.09.2013, 10:07

Ich hab zwar eig. schon einen Link dazu gepostet, aber dann hier mal ein Tutorial: http://www.cprogramming.com/tutorial/string.html
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

15

06.09.2013, 11:41

Ich hab zwar eig. schon einen Link dazu gepostet, aber dann hier mal ein Tutorial: http://www.cprogramming.com/tutorial/string.html
Danke nochmal, das Tutorial hat schon mehr geholfen aber obwohl ich es mache wie es dort beschrieben wurde Funktioniert es immer noch nicht. :( Sollte das schon auch mit dem Microsoft Visual C++ 2008 Compiler funktionieren? ICh werde einfach weiter nachforschen und hoffentlich eine Lösung finden. :search:

Zitat

Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.


Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

16

06.09.2013, 12:03

Ich hab zwar eig. schon einen Link dazu gepostet, aber dann hier mal ein Tutorial: http://www.cprogramming.com/tutorial/string.html
Danke nochmal, das Tutorial hat schon mehr geholfen aber obwohl ich es mache wie es dort beschrieben wurde Funktioniert es immer noch nicht. :( Sollte das schon auch mit dem Microsoft Visual C++ 2008 Compiler funktionieren? ICh werde einfach weiter nachforschen und hoffentlich eine Lösung finden. :search:

Zeig uns einen kurzen Ausschnitt davon, was nicht funktioniert.
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

17

06.09.2013, 13:12

Ich hab das Thema mal verschoben. Hierbei handelt es sich ja eindeutig nicht um Offtopic;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

18

06.09.2013, 18:18

Zum Vergleichen kannst du auch die Funktion strcmp verwenden. Damit geht das recht einfach. Alternativ gibt es auch davon Varianten die Groß-/Kleinschreibung ignorieren oder auch die Unicode-Variante der Funktion. Mehr Infos dazu findest du z.B. hier: http://msdn.microsoft.com/de-de/library/…e(v=vs.90).aspx

Ich habe mal deinen Code entsprechend angepasst (aber nicht getestet):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> 
using namespace std; 
int main () 
{ 
    char chName [20];
    cout << "Dein Name: "; 
    cin.get (chName, 19);
    if (strcmp(neededName, chName) == 0)
        cout << "Hallo, Hans!"; 
    else 
        cout << "Falsche eingabe!";
    return 0; 
}

Wenn du es natürlich richtig Hardcore machen möchtest, dann Vergleichst du selbst in einer Schleife jeden Buchstaben. Aber warum das Rad neu erfinden ;)

19

06.09.2013, 18:28

Ich hab zwar eig. schon einen Link dazu gepostet, aber dann hier mal ein Tutorial: http://www.cprogramming.com/tutorial/string.html
Danke nochmal, das Tutorial hat schon mehr geholfen aber obwohl ich es mache wie es dort beschrieben wurde Funktioniert es immer noch nicht. :( Sollte das schon auch mit dem Microsoft Visual C++ 2008 Compiler funktionieren? ICh werde einfach weiter nachforschen und hoffentlich eine Lösung finden. :search:

Zeig uns einen kurzen Ausschnitt davon, was nicht funktioniert.

Ich denke es liegt immer noch beim vergleich, aber vielleicht mach ich auch trotzt des Tutorials noch etwas falsch gemacht. Hier dann mal der Quellcode:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
#include <iostream>
using namespace std;int main () 
{
std::string Name;cout << "Dein Name: "; 
getline(cin, Name, '\n');if (Name == "Hans") 
cout << "Hallo, Hans!";
elsecout << "Falsche eingabe!";return 0; 
}

Zitat

Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.


20

06.09.2013, 18:34

Zum Vergleichen kannst du auch die Funktion strcmp verwenden. Damit geht das recht einfach. Alternativ gibt es auch davon Varianten die Groß-/Kleinschreibung ignorieren oder auch die Unicode-Variante der Funktion. Mehr Infos dazu findest du z.B. hier: http://msdn.microsoft.com/de-de/library/…e(v=vs.90).aspx

Ich habe mal deinen Code entsprechend angepasst (aber nicht getestet):

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> 
using namespace std; 
int main () 
{ 
char chName [20]; 
cout << "Dein Name: "; 
cin.get (chName, 19); 
if (strcmp(neededName, chName) == 0) 
cout << "Hallo, Hans!"; 
else 
cout << "Falsche eingabe!"; 
return 0; 
}

Wenn du es natürlich richtig Hardcore machen möchtest, dann Vergleichst du selbst in einer Schleife jeden Buchstaben. Aber warum das Rad neu erfinden ;)
Hey, Wow das funktioniert, Danke! :thumbsup: Allerdings ist das Thema damit denke ich nicht beendet, denn es scheint ja noch mehr Möglichkeiten zu geben! ;)

Zitat

Die wichtigste Eigenschaft eines Programmierers ist vorausschauende Faulheit.


Werbeanzeige