String wird nicht ausgegeben???
-
Is doch einfach:
string s1,s2;
cin << s1 << s2;
int zahl = (dynamic_kast<int>(s1 + s2));Tjaja, so einfach is das!
-
Wicked!!!! schrieb:
Is doch einfach
wohl doch nicht! was soll das sein cin<< *rofl*
vielleicht meintest du so was:int result, temp; string s01="1", s02="9"; strstream st; st<<s01; st>>result; st.clear(); st<<s02; st>>temp; result+=temp;
ist aber optimierungbedürftig und auch keine Antwort auf die Frage
-
freshman schrieb:
Wicked!!!! schrieb:
Is doch einfach
wohl doch nicht! was soll das sein cin<< *rofl*
vielleicht meintest du so was:int result, temp; string s01="1", s02="9"; strstream st; st<<s01; st>>result; st.clear(); st<<s02; st>>temp; result+=temp;
ist aber optimierungbedürftig und auch keine Antwort auf die Frage
Genau das macht meine Version auch! Nur das sie halt schneller is, weil sie einfach das Bytemuster anders interpretiert. sollte so in ca 3 CLockticks gehen
-
@Wicked:
cin <<
ist schonmal scheiße
dynamic_kast
ist nicht beschissener.#include <boost/lexical_cast.hpp> #include <iostream> using namespace std; using namespace boost; int main () { string foo, bar; cin >> foo >> bar; double x = lexical_cast<double>(foo); double y = lexical_cast<double>(bar); cout << x + y << '\n'; }
Fertig.
Aber das ist wohl kaum das, was gewollt ist.
-
Wicked!!!! schrieb:
freshman schrieb:
Wicked!!!! schrieb:
Is doch einfach
wohl doch nicht! was soll das sein cin<< *rofl*
vielleicht meintest du so was:int result, temp; string s01="1", s02="9"; strstream st; st<<s01; st>>result; st.clear(); st<<s02; st>>temp; result+=temp;
ist aber optimierungbedürftig und auch keine Antwort auf die Frage
Genau das macht meine Version auch! Nur das sie halt schneller is, weil sie einfach das Bytemuster anders interpretiert. sollte so in ca 3 CLockticks gehen
Troll!
-
einige kleine Dipps:
warum nicht einfach nur char c;
anstatt tmp=d nimm direkt tmp=atoi...
tmp=tmp+d entspricht tmp+=d
du weißt das du in deinem Bsp keine Schleife brauchst;-)
deine Funktion zts ist auch nüscht; siehe dazu meinen vorigen post
um das noch mal klarzustellen: du willst 2strings->zahl->string richtig?
-
@Freshman: Ja ja. Man könnte quasi jede Zeile kritisieren.
int laengeA=strlen(a.c_str());
warum nicht
int laengeA=a.length();
etc. aber das bringts glaube ich nicht.
-
Genau das Kotzt mich an der proggerei an, wenn man im forum was fragt, wird man NUR kritisiert. Anstatt einfach nur ne antwort auf meine Frage zu geben wird nur mein Code kritisiert. Ok, vielleicht ist er scheisse, ich bin halt anfänger und zudem war das nur ein test und sollte nicht möglichst übersichtlich oder toll oder sonstwas sein.
Und noch was was mich aufregt:
WAS ZUM TEUFEL ist an a.size(); besser als strlen(a.c_str()); ????????
-
Hi,
du solltest dich auf Dauer freuen Kritik zu bekommen, sie hilft dir dich zu verbessern.
string ist eine Klasse und hat somit Methoden. Auch eine Methode für die Ausgabe der Länge ist vorhanden, daher ist es unnötig den String erst in einen char* zu konvertieren und dann eine globale Funktion zu verwenden, das ist unnötiger Overhead.
length() ist ein Synonym für size(). Da size() aber nicht nur bei string möglich ist, ist es einfach besser und übersichtlicher auch hier size() zu verwenden.MfG Eisflamme
-
Ka schrieb:
Genau das Kotzt mich an der proggerei an, wenn man im forum was fragt, wird man NUR kritisiert. Anstatt einfach nur ne antwort auf meine Frage zu geben wird nur mein Code kritisiert. Ok, vielleicht ist er scheisse, ich bin halt anfänger und zudem war das nur ein test und sollte nicht möglichst übersichtlich oder toll oder sonstwas sein.
Und noch was was mich aufregt:
WAS ZUM TEUFEL ist an a.size(); besser als strlen(a.c_str()); ????????
dein post zeigt, das du nicht fürs programmieren geeignet bist. Keine Geduld, quängelei, aggressive töne, keine Lernbereitschaft bzw. willen, Kritik dankbar aufzunehmen.
Geh Staubsauger vertretenAußerdem hat "proggerei" nichts mit forumbesuchen zu tun. Foren sind nur ein extra.
-
Ka schrieb:
Genau das Kotzt mich an der proggerei an, wenn man im forum was fragt, wird man NUR kritisiert. Anstatt einfach nur ne antwort auf meine Frage zu geben wird nur mein Code kritisiert. Ok, vielleicht ist er scheisse, ich bin halt anfänger und zudem war das nur ein test und sollte nicht möglichst übersichtlich oder toll oder sonstwas sein.
Und noch was was mich aufregt:
WAS ZUM TEUFEL ist an a.size(); besser als strlen(a.c_str()); ????????
was ein gefühlsausbruch.
bist du dir sicher, dass du innerlich schon reif genug bist, und die geduld hast zu programmieren?1.kritik ist im lernprozess was gutes, da sich falsche sachen so nicht einprägen können.
2. codekritisieren ist ein teil einer antwort, denn guterCode==übersichtlicherCode==gutZuDebuggenderCodein einem häßlichen code fragment sind fehler sogut wie garnicht zu finden.(ich hab selber dazu mal ein extrm gutes beispiel gegeben, ein zitat aus den antworten daraus findest in meiner sig ;))
3. man schreibt nich einfach so mal zum test unübersichtlichen code, tolle ausrede :p
a.size() ist schneller als strlen(a.c_str())
a.size() ist übersichtlicher
strlen ist auch schon leicht veraltet in dem zusammenhang
-
@otze: du könntest die smileys ruhig weglassen, bei dem gibts wirklich nichts mehr zu lachen.
Wer solcherart posts runterlässt, hat in meinen Augen gleich verloren.
-
randa schrieb:
@otze: du könntest die smileys ruhig weglassen, bei dem gibts wirklich nichts mehr zu lachen.
Wer solcherart posts runterlässt, hat in meinen Augen gleich verloren.Warum? Mir wäre eine Antwort auf meine Frage auch lieber als 500 Posts die meinen Stil bemängeln
MfG SideWinder
-
so, ich hab mich jetzt mal drangesetzt, und hab gemerkt: a) nicht durchdacht, b) absolut fehlerbehaftet und c) absolut falsch^^
hier der funktionierende code:
#include <iostream> #include <sstream> #include <string> using namespace std; string convert(int zahl){ ostringstream Str; Str<<zahl; return Str.str(); } int main(){ string a="9"; string b="1"; string end=convert(atoi(a.c_str())+atoi(b.c_str())); cout<<"End: "<<end<<endl; cin.get(); }
ich weis zwar nich wo genau der fehler lag, irgendwie hab ich nicht durch deine logik geblickt.deine convert methode hat aber a) einen veralteten strstream genutzt, und b einen buffer der länge 0, dh die funktion hat in speicherbereichen geschrieben, wo vielleicht schon andre funktionen ihre werte abgelagert haben.
und deine schleifenkonstruktion musst du mir echt mal erklären,die hab ich nämlich garnicht geblickt
-
@otze: warum benutzt du denn ostringstream und nicht strstream? gibt es da einen besonderen Grund?
ich denke mal ka wollte mit der Schleife den Code auch für Zahlen lauffähig machen, die mehr als einstellig sind. Für diese läuft otzes' code auch nicht.
Vorschlag:string convertitostr(int number){ string s; strstream strstr; strstr<<number; strstr>>s; return s; } int convertstrtoi(string s){ int number; strstream strstr; strstr<<s; strstr>>number; return number; } int main(){ string a="90"; string b="11"; string end = convertitostr( convertstrtoi(a)+convertstrtoi(b) ); cout<<"End: "<<end<<endl; return 0; }
ich weiß, auch nicht so der Knaller
aber dann würde man eigentlich sofort eine Fkt definieren z.B.
string addSasI(string a, string b);
oder so ähnlich.
post scriptum:
bitte nicht schlagen wegen der Variablennamen
-
@otze: warum benutzt du denn ostringstream und nicht strstream? gibt es da einen besonderen Grund?
strstream ist deprecated, also nicht mehr der "reinen lehre" entsprechend, ausserdem gibt ostringstream die daten direkt als string wieder aus.
-
thx', gut zu wissen!
-
Tja Luete eure lösungen sind ganz toll aber sie ermöglichen nicht das was eigentlich irgendwann mal ein ziel war, nämlich mit beliebig grossen zahlen rechnen zu können. Also ich weiss schon das mein billigcode das nich kann, aber ich hatte ja auch eigentlich vor das noch zu verbessern. Nur irgendwie is mir die lust vergangen ...
-
@ka: komm schon: Kopf hoch! (btw: ist ne' gute Idee sich so etwas zu programmieren, aber ich würde dir vorschlagen mit etwas simpleren anzufangen. Oder wenn du sofort in die vollen gehen willst, dann kannst du dir ja eine Klasse Xlong oder so was schreiben, in der du einen neuen Datentyp realisierst, eben einen x-tra großen). Es wußte ja auch keiner so genau was du wolltest und deshalb kannst du auch keinem einen Vorwurf machen. Aber eines steht fest: Kritik ist auch ein Ansporn besser zu werden. Jetzt denk aber auch nicht, daß dir hier keiner helfen will und alle deine posts als Flaniermeile für ihr Können mißbrauchen; das ist nämlich nicht der Fall. Laß dir die Freude am coden nicht nehmen
-
ahso, dass wolltest du...
hier mal ein erster ansatz:
string a("123456"); string b("123456"); length=a.size()<b.size?a.size(),b.size(); int temp=0; string output; for(int i=length-1;i>=0;--i){ int temp=atoi(a[i])+atoi(b[i])+temp; output.insert(output.begin(),convert(temp%10)); temp=(temp%10)/10; }
is nich vollständig, aber den rest solltest schaffen