Rechnen mit Strings????
-
Wenn ich nur das so wie dus geschrieben habe nutze kommt diese Meldung
error C2039: 'atol' : Ist kein Element von 'std'
wenn ich Möglichkeit 2 rausnehme, das methode in meinen namen umwandle und die a´s in den Namen des Strings dann gefällt das dem Compiler garnicht.
-
Wenn ich nur das so wie dus geschrieben habe nutze kommt diese Meldung
error C2039: 'atol' : Ist kein Element von 'std'besorg dir eine neue Standard-Library
wenn ich Möglichkeit 2 rausnehme, das methode in meinen namen umwandle und die a´s in den Namen des Strings dann gefällt das dem Compiler garnicht.
entweder versteh ich dich nicht oder du solltest noch mal tief in dein C++ Buch schauen
-
Und wenn ich dann die Variable long anfangsjahr benutze und ihr den inhalt des Strings anfangs_jahr zuteilen will also
long anfangsjahr(const std::string &anfangs_jahr) { std::stringstream s(anfangs_jahr); long ret; s >> ret; return ret; }
kommt dieser Fehler vom Compiler
error C2601: 'anfangsjahr' : Lokale Funktionsdefinitionen sind unzulaessig
-
Was heist neues Standart Library?? Ich hab MS VC++ 6.0, zwar Autoren Edition *Fluch* aber das macht ja nix.
-
du darfst keine Funktionen in anderen Funktionen definieren
du solltest besser lesen, was dir der Compiler sagt
-
Das is toll, hilft mir aber nich weiter, wie muß denn das aussehen, damit es funktioniert??
-
Raven2 schrieb:
Es giebt diesen Befehl also wird er auch benutz. Basta!!
Uhhh ja
, das ist die richtige Einstellung. Wenn du wenigstens auch so mit deinem Hirn verfahren würdest...
-
MaSTaH schrieb:
Raven2 schrieb:
Es giebt diesen Befehl also wird er auch benutz. Basta!!
Uhhh ja
, das ist die richtige Einstellung. Wenn du wenigstens auch so mit deinem Hirn verfahren würdest...
Ich benutze mein hirn, was haben nur alle gegen die goto Befehle?? sind doch sehr nützlich und so gut bin ich im Programmieren nich, also nutze ich den einfachsten Weg dem programm zu sagen was ich will.
-
Manchmal ist er in der Tat nützlich aber du verfällst sofort in den Spaghetticode der goto verpönt gemacht hat. Desweiteren scheinst du nicht zu wissen wofür man for-Schleifen benutzt. Dein Basta! war also vollkommen unangemessen und du solltest nochmal ein gutes C++-Buch zur Hand nehmen. Deinen Code kann kein Schwein lesen und es kostet wirklich Überwindung ihn nachzuvollziehen.
-
Also ich hab ihn gemacht und ich kann ihn logischerweise nachvollziehen, desweiteren steht drunter aber was nacheinander passiert also dürfte es nich zu schwer fallen.
Diese dumme Meldung hab ich jetzt zwar ausgebügelt dafür hab ich aber jetzt ein anderes Problem, wieso weigert sich der Compiler ein Variable long - Variable long zu machen?? (ich hab 2 Strings zu longs gemacht)
-
Zeig mal den Code in dem du das machst.
BTW: Zu deinem Code auf der ersten Seite: Dir ist klar, dass for(;;){...} eine Endlosschleife ist die du sofort mit goto wieder verlässt und man sie besser nicht benutzen sollte nur um sich einen Scope zu schaffen? Mit anderen Worten: Lass das for(;;) weg.
-
Raven2 schrieb:
Das is toll, hilft mir aber nich weiter, wie muß denn das aussehen, damit es funktioniert??
mein Tipp ist lies ein gutes C++ Buch oder Tutorial, so kann man dir einfach nicht weiterhelfen.
http://www.schornboeck.net/ckurs/index.htm
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
http://www.volkard.de/vcppkold/inhalt.htmlsollten ein paar Ansätze sein
-
du musst dir echt mal einen besseren fragestyle zulegen. woher sollen wir wissen was du falsch machst, wenn du weder fehler noch code postest. und bevor du wieder dein gesamtes spaghettiprogramm hier reintust:
der fragende sollte ein minimales compilierbares beispiel posten, dass sein problem enthaelt. die meisten probleme loesen sich dann mit einem klatsch vor die stirn von selbst. nur sind viele leute zu faul dazu.
-
OKOK Also ein Minimales Beispiel
Bei dem Hier hab ich mal alle Vergleiche die fehler vorbeugen sollen rausgelöscht:#include <iostream> #include <string> #include <sstream> #include <cstdlib> using namespace std; long anfangsjahr(const std::string &anfangs_jahr) { std::stringstream s(anfangs_jahr); long ret; s >> ret; return ret; } long endjahr(const std::string &end_jahr) { std::stringstream s(end_jahr); long ret; s >> ret; return ret; } int main() { string name;//is in dieser kleinen Variante nicht Benutzt string anfangs_datum; string end_datum; cout<<"Gib bitte das Anfangsdatum ein im Format TT.MM.JJJJ ein. "; cin>>anfangs_datum;//Anfangsdatum cout<<"Hier bitte das Enddatum eingeben. "; cin>>end_datum;//Enddatum string anfangs_jahr;//Definition der strings die die Tage, Monate bzw Jahre aufnehmen string end_jahr; string anfangs_monat; string end_monat; string anfangs_tag; string end_tag; anfangs_jahr = anfangs_datum.substr(6, 4);//Hier bekommen die strings ihren Wert end_jahr = end_datum.substr(6, 4); anfangs_monat = anfangs_datum.substr(3, 2); end_monat = end_datum.substr(3, 2); anfangs_tag = anfangs_datum.substr(0, 2); end_tag = end_datum.substr(0, 2); long jahresdifferenz; jahresdifferenz = endjahr - anfangsjahr;//Hier kommt der Fehler cout<<anfangsjahr<<"-"<<endjahr<<"="<<jahresdifferenz<<endl; return 0; }
Der Fehler is der Hier
error C2296: '-' : Ungültig, da der linke Operand vom Typ 'long (__cdecl *)(const class std::basic_string<char,struct std::char_traits<char>,class std::allocato
r<char> > &)' istHilft euch das jetzt weiter???
-
*ploing*. Du kannst doch einen String nicht einfach in ein long umwandeln. Wir sind hier nicht in irgendeinem Basic. Typen spielen eine Rolle. Deswegen solltest du zum umwandeln atol oder etwas ähnliches wählen...
-
Bei mir Klingelts da nich, so wie ichs hier gemacht habe, das war methode1 von der ersten Seite. Und dieses atol führt bei meinem Compüiler nicht zu gegenliebe.
-
warum hast du die gleiche funktion zweimal? und warum subtrahierst du funktionsnamen? und warum vergisst du das nicht alles und holst dir ein anfaengerbuch?
-
Also das ist total krumm da oben *confused*
-
aha, mastah sieht genauso wenig durch.
-
PeterTheMaster schrieb:
aha, mastah sieht genauso wenig durch.
Bäää, ich dachte das seien Stringvariablen wegen der fehlenden (). Dachte ich könnte das editieren bevor's jemand merkt. Warst schneller!