PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Raqndom String in C++



Brujah
09-10-2006, 14:43
Hallo Leute,

ich möchte einen 30 stelligen String erzeugen der dann ungefähr so aussehen soll:
"748192846372819467347106836172"

Ich erzeuge die Zufallszahlen so:

int random;
string hugo;
for (int i=0; i<=30; i++)
{
random = rand()%9;
}

Wie weise ich diese jetzt meinem String zu?

Ich habe einen Haufen Zeug im Netz gefunden aber nichts scheint zu funktionieren...
Die Funktion itoa z.B. scheint es garnicht zu geben :-(

anda_skoa
09-10-2006, 15:49
Mit einem Stringstream



#include <string>
#include <sstream>

std::stringstream stream;

stream << random;

std::string random_string = stream.str();


Ciao,
_

Pingu
09-10-2006, 15:57
oder so:

char hugo[31];

for (int i=0; i<=30; i++)
hugo[i] = (0x20 + (char)(rand()%10));

hugo[31] = "\0";

Christoph
09-10-2006, 16:08
Oder mit sprintf. Das hat den Vorteil, dass eine Formatierung (z.B. links oder rechtsbündig, mit Nullen auffüllen etc.) angegeben werden kann.

Brujah
09-10-2006, 19:39
Okay, ich habe mir das durchgelesen und es ein bisschen anders realisiert.
Meine Lösung sieht so aus:

string itoa(int num)
{
stringstream converter;
converter << num;
return converter.str();
}

int random=0;
Verification="";
for (int i=1; i<=30; i++)
{
random = rand()%9;
Verification += itoa(random);
}

Danke an alle!

anda_skoa
09-10-2006, 22:43
Es wäre schon ein bischen effizienter wenn du die Zahlen in der Schleife nur in den Stream steckst und erst am Ende den String rausholst.

Ciao,
_

Brujah
10-10-2006, 11:35
Denke du hast Recht.
Allerdings ist Optimierung in diesem Falle garnicht nötig da dieser String lediglich am Anfang des Spiels einmal bestimmt wird.

Gestern habe ich auch noch gettext zum laufen gebracht.
Langsam aber sicher geht die Entwicklung voran!
Wird aber bestimmt noch ein paar Monate dauern bis das Spiel wieder spielbar ist.
(Die purebasic version ist schon abgeschlossen und ich schreibe das Ganze nun in c++ neu)

Joghurt
11-10-2006, 11:55
Oder mit sprintf. Das hat den Vorteil, dass eine Formatierung (z.B. links oder rechtsbündig, mit Nullen auffüllen etc.) angegeben werden kann.Es ging hier um C++. Und Streams kann man natürlich ebenso Formatierung mitgeben.