• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

C++: Integer -> String

Olti1986

Member
Hallo!

Ich bin ziemlicher C++ Neuling und hab nun folgendes Problem.
Ich arbeite mit Eclipse und hab nun eine Variable, die in einer Schleife hochläuft. Diese Integervariable soll nun an einen String angehängt werden. Nur ich finde nichts wie ich eine Integervariable in einen String umwandeln kann, so das ich ihn nach dem Motto
Code:
s = s + i;
an einen String anhängen kann.

MFG Olti
 

taki

Advanced Hacker
Wenn Du Qt3 einbindest, dann kannst Du das mit der QString Klasse prima lösen:

Code:
#include <qstring.h>

       QString s = "irgendwas";

und

Code:
       s = QString(s +"%1").arg(i);

oder

Code:
       s.append ( QString.setNum( i ) );
 
Code:
char buf[64];
snprintf(buf, sizeof(buf), "%d", s);
strcat(dest, buf);
Das ist nur Beispielcode, in der wirklichen Welt verwendet man snprintf effizienter und wenn schon, dann mit strncat, strlcat oder sonstigem.
 

abgdf

Guru
So, jetzt hab ich das in reinem C:
Code:
#include <stdio.h>
#include <string.h>

int main () 
{
int i;
char astr[64]; /* astr nimmt den Endstring auf, maximal 63 Zeichen + "\0". */
char *bstr="Zahl:"; /* bstr ist Dein Ausgangsstring */
char cstr[10]; /* cstr nimmt Deine Zahl i als String auf. */

for (i=1;i<=100;i++)
{
sprintf(cstr,"%d",i); /* Zahl i nach String cstr übertragen. */
strcpy(astr,bstr); /* String bstr nach String astr kopieren. */
strcat(astr,cstr); /* String cstr String astr anfügen. */
printf("%s\n",astr); /* astr ausgeben. */
}

}

C-Strings sind schon sehr schwer zu handhaben, da man den benötigten Speicher selbst verwalten muß.
Etwas mehr dazu und zu (etwas anderen) C++-Strings auf meiner (unfertigen) Seite

http://www.angelfire.com/linux/tux25/cpp.html

dort unter Punkt 7.

(Ich bin aber kein ausgebildeter Programmierer.)

Beste Wünsche
 

abgdf

Guru
Bzgl. C++-Strings finde ich dieses Dokument noch recht vielversprechend:

http://mia.ece.uic.edu/~papers/intv/pdfgqvaDhcafa.pdf

Leider finde ich "strutils.h" und "genlib.h" nicht auf meinem System. Sonst wäre "IntegerToString" die C++-Lösung.

Nochmal C mit einer Variable weniger:

Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main ()
{
int i;
char *b;
char *a;
a=(char *) malloc(64);
b=(char *) malloc(10);
for (i=0;i<=100;i++)
{
strcpy(a,"Zahl:");
sprintf(b, "%d", i);
strcat(a,b);
printf ("%s\n",a);
}
}

Viele Grüße

abgdf

P.S.: Sehr schön auch, was man bei google noch so zum Thema findet: "Strings & String-Tangas" :)
 

ponto

Newbie
In C++ macht man das so:

Code:
int a = 5;
std::stringstream s;
s << a;
std::string str = s.str();

Boost Lexical Cast ist ein einfacher Wrapper um diese Operation.
 

abgdf

Guru
Vielen Dank !
Ich mußte aber noch etwas basteln, um zu verstehen, was Du meinst:

Code:
#include <iostream>
#include <sstream>
#include <string>
int main()
{
int i;
std::string astr;
std::stringstream s;
for (i=0;i<=100;i++)
{
s << i;
astr = "Zahl:"+s.str();
std::cout << astr << std::endl;
s.str ("");
}
}

Viele Grüße
 
Oben