Tom: C++: aus Interger oder Long einen String machen

Beitrag lesen

Hello Andreas,

In C++ kann man auch die STL-Klasse ostringstream
verwenden, mit dem '<<' - Operator alles mögliche
hineinschieben und das ganze dann in einen string
umwandeln:

#include<iostream>
#include<string>
#include<sstream>

using namespace std;
int main(void) {
        ostringstream os;
        int i(17);

os << i << " + " << i << " = " << i+i << endl;

string s(os.str());
        cout << s;

return 0;
}

  
Danke für die Tipps.  
Ich hatte in 'unserem' Buch "C++ von A-Z" noch etwas gefunden, eigentlich anders herum, aber habe daraus dann meine Versuche abgeleitet und eine Funktion/Methode erstellt...  
  
Beispiel:  
  
  
#include <iostream>  
#include <sstream>  
#include <iomanip>  
  
using namespace std;  
  
// ...  
  
string laufzeittext(long laufzeit)  
{  
    int stunde;  
    int minute;  
    int sekunde;  
    int rest;  
  
    stringstream ausgabestream;  
    string ausgabe = "";  
  
    stunde = laufzeit / 3600;  
    rest = laufzeit - stunde \* 3600;  
    minute = rest / 60;  
    rest = rest - minute \* 60;  
    sekunde = rest;  
  
    ausgabestream << fill('0') << setw(2) << stunde << ":"  
                  << fill('0') << setw(2) << minute << ":"  
                  << fill('0') << setw(2) << sekunde;  
  
    ausgabestream >> ausgabe;  
  
    return ausgabe;  
}  
  
  
Das Beispiel ist in dieser Form entstanden, weil ich einen Mitschüler hier sitzen habe, der mit meiner Hilfe erstmal das Programmieren lernt. Dafür muss er C++ verwenden, wobei sich das z.Zt. hauptsächlich noch im C-Bereich bewegt. Ich kann dann gelegentlich in die Übungen mal meine Fragestellungen einbauen und üblicherweise sollte sie mir unser Dozent dann auch beantworten können... Immer klappt das leider auch nicht aus dem Handgelenk.  
(Eine Woche müssen wir noch mit "slack joint net" zurecht kommen, dann gibts hoffentlich eine neue Anbindung mit Power)  
  
Ist das so überhaupt ok? (es geht nur um die Konvertierung, nicht um die Zeitrechnung!)  
  
  
Was mich beim Besipiel irritiert:  
  
Wie legt C++ den String fest, der ausgegeben wird? Wird der auf dem heap angelegt und nur ein Zeiger darauf übergeben?  
  
Außerdem hat die Formatierung mittels der IOManip-Filter setw(2) nicht funktioniert. Da wurde der gesamte String auf 2 Zeichen beschränkt. Er muss abgeschnitten worden sein. Erst nachdem ich fill('0') hinzugefügt habe, hat es erwartungsgemäß funktioniert ( 00:43:13 ). Woran kann das liegen?  
  
Der Kollege verwendet Dev-C++ 4.9.9.2  
  
Ich habe eclipse 3.4.x aber das habe ich vorhin zum Abschmieren getrieben. Nun muss ich erstmal wieder neu installieren ;-O  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
}  
  
  
  
  
Liebe Grüße aus Syburg bei Dortmund  
  
Tom vom Berg  
![](http://selfhtml.bitworks.de/Virencheck.gif)  
  

-- 
Nur selber lernen macht schlau  
<http://bergpost.annerschbarrich.de>