Guten Tag Community
Ich hab mir soeben ein kleines Programm in C++ geschriebe, das mir Zufallsstrings erzeugen soll.
Mein vorhaben
- Sehr schnelles erstellen von Zufallsstrings (Stringstream pausibel?)
- Alle erzeugten Zufallsstrings aneinanderketten und mit einem "std::endl" trennen
Nun eigenlich funktioniert das generierem des Zufallsstrings. Nur das aneinanderketten das wiederum geht nicht. Und zwar besteht das problem, das schon nach wenigen erzeugten Strings plötzlich alle Strings am schluss gleich sind. Siehe Bild.
Wie löse ich das? Auf was muss ich überhaupt schauen? Ich würde gerne auf der "Stringstream-Variante" bleiben. Nur so werde ich C++ in solchen sachen irgendwann verstehen
Danke für die Hilfe.
Freundliche Grüsse
exc-jdbi
Hier noch ein wenig Code:
Ich hab mir soeben ein kleines Programm in C++ geschriebe, das mir Zufallsstrings erzeugen soll.
Mein vorhaben
- Sehr schnelles erstellen von Zufallsstrings (Stringstream pausibel?)
- Alle erzeugten Zufallsstrings aneinanderketten und mit einem "std::endl" trennen
Nun eigenlich funktioniert das generierem des Zufallsstrings. Nur das aneinanderketten das wiederum geht nicht. Und zwar besteht das problem, das schon nach wenigen erzeugten Strings plötzlich alle Strings am schluss gleich sind. Siehe Bild.
Wie löse ich das? Auf was muss ich überhaupt schauen? Ich würde gerne auf der "Stringstream-Variante" bleiben. Nur so werde ich C++ in solchen sachen irgendwann verstehen
Danke für die Hilfe.
Freundliche Grüsse
exc-jdbi
Hier noch ein wenig Code:
Code:
#include "stdafx.h" #include <list> #include <time.h> #include <vector> #include <sstream> #include <iostream> #include <iterator> #include <algorithm> int random; time_t t; void CreateRndString(int iLen,std::stringstream *pss){ char cRnd[]="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; int iCRnd=std::strlen(cRnd); time (&t); srand((unsigned int)t); for(int i=0;i<iLen;i++){ random=(rand () % iCRnd );//höchste Zahl 61 if(random>=iCRnd){i-=1;continue;} if(random<0){i-=1;continue;} *pss<<cRnd[random]; } } std::stringstream GetCharRndString(int iArrLen,int min,int max){ int iLen=0; time (&t); srand((unsigned int)t); std::stringstream *pssTemp; std::stringstream ss,*pss=&ss; for(int i=0;i<iArrLen;i++){ random=(rand()%((max+1)-min))+min; pssTemp=new std::stringstream; CreateRndString(random,pssTemp); *pss<<pssTemp->str()<<std::endl; // << Wie muss ich das hier hinzufügen. delete pssTemp; // << Ist das korrekt, wenn ich hier delete } return ss; } int _tmain(int argc, _TCHAR* argv[]){ int min=350,max=5000; time (&t); srand((unsigned int)t); random=(rand()%((max+1)-min))+min; std::stringstream ss; ss=GetCharRndString(random,10,50); return 0; }
Comment