Announcement

Collapse
No announcement yet.

std::stringsteam

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • std::stringsteam

    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:
    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;
    }
    Attached Files

  • #2
    Code:
    srand((unsigned int)t);
    darf nur einmal aufgerufen werden, vorzugsweise in der Main. On das für 'time (&t);' auch gilt?

    Auf jedenfall so funktionierts jetzt bei mir.

    Freundliche Grüsse

    exc-jdbi

    Comment

    Working...
    X