Anzeige:
Ergebnis 1 bis 8 von 8

Thema: Raqndom String in C++

  1. #1
    Registrierter Benutzer
    Registriert seit
    23.07.2001
    Ort
    Böblingen
    Beiträge
    69

    Raqndom String in C++

    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 :-(
    Sony Vaio Laptop mit 2,8 Gig Prozessor
    Kubuntu "Feisty Fawn"
    www.lostlabyrinth.com

  2. #2
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Mit einem Stringstream

    Code:
    #include <string>
    #include <sstream>
    
    std::stringstream stream;
    
    stream << random;
    
    std::string random_string = stream.str();
    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  3. #3
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    oder so:
    Code:
      char hugo[31];
    
      for (int i=0; i<=30; i++)
        hugo[i] = (0x20 + (char)(rand()%10));
    
      hugo[31] = "\0";
    Homepage: www.pingu.info

  4. #4
    Registrierter Benutzer
    Registriert seit
    22.06.1999
    Beiträge
    677
    Oder mit sprintf. Das hat den Vorteil, dass eine Formatierung (z.B. links oder rechtsbündig, mit Nullen auffüllen etc.) angegeben werden kann.

  5. #5
    Registrierter Benutzer
    Registriert seit
    23.07.2001
    Ort
    Böblingen
    Beiträge
    69
    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!
    Sony Vaio Laptop mit 2,8 Gig Prozessor
    Kubuntu "Feisty Fawn"
    www.lostlabyrinth.com

  6. #6
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    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,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  7. #7
    Registrierter Benutzer
    Registriert seit
    23.07.2001
    Ort
    Böblingen
    Beiträge
    69
    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)
    Sony Vaio Laptop mit 2,8 Gig Prozessor
    Kubuntu "Feisty Fawn"
    www.lostlabyrinth.com

  8. #8
    Registrierter Benutzer
    Registriert seit
    25.10.2004
    Beiträge
    819
    Zitat Zitat von Christoph Beitrag anzeigen
    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.

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •