C++ mehrere Int zu einem String umwandeln

_mclaren_

Lieutenant
Registriert
Dez. 2006
Beiträge
909
Hallo!

Ich suche nach einer Möglichkeit 3 Int werte zu einem string zusammen zu bauen.
Die drei int werte sind Stunden, Minuten und Sekunden.

int stunde = 23;
int minute = 34;
int sekunde = 12;

und ich muss nun als Funktionsrückgabe Wert an die main einen String zurückgeben der in diesem Fall so aussieht: "23:34:12"
Der string soll in der main nämlich gleich direkt ausgegeben werden.

Hat jemand einen Tipp wie man das machen könnte?

vielen Dank
 
Welche Umgebung? Kann mich unter MS VS neben ConvertTo-Funktionen an eine Concat-Funktion erinnern, die aus mehreren Operanden einen zusammengsetzten String liefert.
 
Ja und? Ich kann C++ Quellcode auch in Notepad schreiben und durch den nächstbesten Compiler jagen. In "besseren" Entwicklungsumgebungen gibt es halt schon vorgefertigte Ressourcen, die man nur benutzen muss/kann. Nur meine Glaskugel ist gerade weg...
 
im normalen Editor in linux, keine spezielle umgebung
 
Zuletzt bearbeitet:
string ausgabe(string stunde , string minute , string sekunde )
{
string stunde= 23 ;
//so machst das mit den anderen 2 auch...

string r = stunde.minute.sekunde
return r;
}
 
Zuletzt bearbeitet:
easy zumindest in java .. ka obs in c/++ geht
int stunde = 23;
int minute = 34;
int sekunde = 12;

dat oben nimmste und packst da sowas rein
String zeit = " ''+sekunde+minute+sekunde;"
also alle int's in ein string packen und "" hinzufügen, dh. leerezeichen addieren, ist en trick :P
 
Zuletzt bearbeitet von einem Moderator: (Beitrag wiederhergestellt)
@pes-forever: Welche Programmiersprache soll das sein? oO

@topic: Ich würds mit nem ostringstream machen...

ostringstream os;
os << zahl1 << "..." << zahl2 << "...";
string s = os.str();

so ungefär müsste das aussehen können.
Edit: genau so macht's ja auch die von VollesKorn verlinkte Variante.

@Xsss4hell: Nein es geht eben nicht in C++. Deshalb frag er ja nach.
 
1668mib schrieb:
@topic: Ich würds mit nem ostringstream machen...

ostringstream os;
os << zahl1 << "..." << zahl2 << "...";
string s = os.str();

so ungefär müsste das aussehen können.
Edit: genau so macht's ja auch die von VollesKorn verlinkte Variante.

@Xsss4hell: Nein es geht eben nicht in C++. Deshalb frag er ja nach.

hey genau man, das war der trick den ich meine ;)
so denn bis next week, schönes we wünsch ich euuusch!
 
Zuletzt bearbeitet von einem Moderator: (Beitrag wiederhergestellt)
@pes-forever: Könntest den Code ja mal testen, ich glaube irgendwie nicht, dass das funktionieren wird...
 
Xsss4hell schrieb:
hey genau man, das war der trick den ich meine ;)
so denn bis next week, schönes we wünsch ich euuusch!

dachte es sollte ne Funktion sein oO

1668mib schrieb:
@pes-forever: Könntest den Code ja mal testen, ich glaube irgendwie nicht, dass das funktionieren wird...

kanns grad nicht, bin an der ps3...
aber du kannst recht habn das da ein fehler ist mit dem "."
komm halt drauf an ob er konsole oder mit grafischer Oberfläche programmiert...
 
dann halt so:
Code:
string datestr(int h, int m, int s)
{
  ostringstream os;
  // Falls Stunden zweistellig angezeigt werden Kommentar
  // in nächster Zeile entfernen...
  // if (h < 10) os << '0';
  os << h << '.';
  if (m < 10) os << '0';
  os << m << '.';
  if (s < 10) os << '0';
  os << s;
  return os.str();
}

Einige Bibliotheken müssen noch includiert weden..
Edit: So wie ich es verstanden hatte ging es ihm aber eigentlich nur um einen Denkanstoß.
 
hallo? itoa()? ist in der cstdlib enthalten. :)

@pes:
das ist bei weitem kein borland c++, denn borland bietet nur die vcl an, welche man mit der mfc von ms vergleichen kann (also eine runtime umgebung). btw: in c++ verbindet man die strings immer noch mittels plus, nur php verwendet den punkt als verknüpfung.
 
1668mib schrieb:
@pes-forever: Könntest den Code ja mal testen, ich glaube irgendwie nicht, dass das funktionieren wird...

stimmt!
peinlich :D

an der ps3 lässt sich halt so schlecht schreiben :mussweg:
 
hmm strin.Format("%i\n%i\n%i\n", int1, int2,int3);

wenn format nicht verfügbar ist mit SPRINTF. Dabei muss man beachten dass diese funktion sehr unsicher ist.
ich würde die nur dann einsetzen wenn es keine andere möglichkeiten gäbe.

Code:
char out[50];
int strlne = sprintf(out, "Wert 1: %i\n Wert 2: %i\n Wert 3: %i\n", int1, int2, int3);

out muss immer explizit angegeben werden, also die Länge. hab selbst probleme mit sprintf wenn out grösser ist als 80. Keine Ahnung wieso... aber ich bekomme einen der zeigt immer auf den falschen Page im speicher.
 
Ich halte ehrlich gesagt von den (s)printf-Funktionen nicht viel - zu schnell ändert sich Reihenfolge und Datentyp - und manchmal gibt man auch einfach den falschen Typ an, den man muss selbst sicherstellen, dass man einem %i auch ein int übergibt usw...

Ach ja, in C# z.B. hat man das eleganter gelöst, da braucht man den Datentyp nicht unbedingt angeben sondern gibt nur {0}, {1.}, ... an - egal ob int, string, char, oder sonst was...
 
Zurück
Oben