Integer in String umwandeln?

Blame23

Mitglied
Hallo zusammen,

ich hab schon einiges ausprobiert aber irgendwie steck ich gerade fest.
Ich habe hier eine Funktion:
Code:
void Zugangsdaten(std::string *zugangsdaten)
{
	int zahl;
	srand ( time(NULL) );
        zahl = rand() % 100000; 
	zugangsdaten[0] = zahl; //id
       std::cout<< zugangsdaten[0]; //Hier kommt keine zahl raus
}

Das Programm soll also eine Zufallszahl generieren und an einen String anhängen.
Nur wird aus der Zufallszahl leider immer ein kryptischer Buchstabe.
Also muss ich erst den Integer Wert in Sting umwandeln, damit das passt.
Aber wie?

Bin für jede Hilfe dankbar!

greets
Blame
 
Hmm auf dieses Beispiel bin ich schon einmal gestoßen... aber aus irgendeinem Grund hat es jetzt geklappt.

Naja Hauptsache es funktioniert :)
DANKE!
 
hi

eine andere Möglichkeit wäre itoa

Bsp:
Code:
	int zahl;
	srand ( time(NULL) );
        zahl = rand() % 100000; 
	itoa(zahl,zugangsdaten[0],10);
       std::cout<< zugangsdaten[0]; //Hier kommt keine zahl raus

ich habs zwar noch nicht getestet, aber müsste gehn. Korriegiert mich wenn ich falsch liege
Hoffe es hilft
 
Das geht bestimmt nicht! Das ist schwachsin!

C++:
itoa(zahl,zugangsdaten[0],10);
ist undefiniertes Verhalten!

C++:
void access_data(std::string& data)
{
    static bool random_initialised(false);
    if (random_initialised == false) { std::srand (static_cast<unsigned>(std::time(NULL))); random_initialised = true; }

    const unsigned int number(std::rand() % 100000); 
    // std::cout << number << data; 
}
Was du machst, war einfach, dass du den Integralen Wert des Zeichens (vgl. ASCII-Tabelle) dem 1. Zeichen zugewiesen hast.

Nun aber du wolltest ja das nicht einfach ausgeben, sondern das an den String hängen.
itoa kommt garnicht in Frage, da es kein Standard C, noch C++ ist. std::sprintf wäre die Möglichkeit, die aus C stammt. std::stringstream die, die aus C++ stammt.

C++:
#include <ctime> // std::time
#include <cstdlib> // std::srand, std::rand
#include <sstream> // std::ostringstream
#include <string> // std::string

void access_data(std::string& data)
{
    static bool random_initialised(false);
    if (random_initialised == false) { std::srand (static_cast<unsigned>(std::time(NULL))); random_initialised = true; }

    std::ostringstream ss;
    ss <<  std::rand() % 100000 << data;
    data = ss.str();
}
schon fertig!
 
Zurück