Zufalstring generieren



  • Na, du musst da schon ein wenig strukturierter rangehen 😃

    Also: Was genau willst du erreichen? Wie ich den Startpost verstanden hab, willst du einen Zufallsstring erzeugen, was für mich sowas wäre: "kjnasdiun89721bnaonsu9". D.h. alle Zahlen von '0' bis '9', 'a'-'z' und 'A'-'Z'. Jedes Zeichen davon hat einen bestimmten Zahlenwert zugeordnet, ein 'a' entspricht z.B. 97.
    Du brauchst also ein paar Zufallszahlen (gibts nen guten Artikel im Magazin) und musst dazu jeweils eins der infrage kommenden Zeichen auswählen. Aber was willst du auf einmal mit einer Datei?



  • du koenntest itoa nutzen -> http://www.cplusplus.com/reference/clibrary/cstdlib/itoa.html

    sonst vllt irgendwie so:

    #include <string>
    #include <cstdlib>
    using namespace std;
    
    string random_string( int length )
    {
    	string result;
    
    	srand( time( NULL ) ); // zufallszahlengenerator initialisieren
    	for( int i = 0; i < length; i++ )
    	{
    		result += rand() % ( 255 + 1 ); 	
    	}
    	return result;
    }
    

    ist nicht getestet ...

    // edit: zu lange getippt ...

    mfg,
    julian



  • Na, du musst da schon ein wenig strukturierter rangehen 😃

    Also: Was genau willst du erreichen? Wie ich den Startpost verstanden hab, willst du einen Zufallsstring erzeugen, was für mich sowas wäre: "kjnasdiun89721bnaonsu9". D.h. alle Zahlen von '0' bis '9', 'a'-'z' und 'A'-'Z'. Jedes Zeichen davon hat einen bestimmten Zahlenwert zugeordnet, ein 'a' entspricht z.B. 97.
    Du brauchst also ein paar Zufallszahlen (gibts nen guten Artikel im Magazin) und musst dazu jeweils eins der infrage kommenden Zeichen auswählen. Aber was willst du auf einmal mit einer Datei?

    Also ich will das entweder ein zufallstring erzeugt wird den ich dann so einsetzen kann:

    ofstream file( zufallstring.c_str(), ios_base::out);
    

    oder dass er das versteht:

    int a=1;
    ofstream file(i , ios_base::out);
    

    Gibt es da möglichkeiten?



  • Wie lange soll der String denn sein? Zufällige Länge? Und hast du schon Ansätze?

    Und was willst du mit dem int? 🤡



  • zufällige Länge .

    Der Code funktioniert auch nicht.

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    string random_string( int length )
    {
        string result;
    
        srand( time( NULL ) ); // zufallszahlengenerator initialisieren
        for( int i = 0; i < length; i++ )
        {
            result += rand() % ( 255 + 1 );    
        }
        return result;
    }
        void erstellen()
    { 
    
        ofstream file(result.c_str() , ios_base::out);
    
    }
        int main()
    {
    
    erstellen();
    
    return 0;}
    


  • Woher soll die Funktion "erstellen" eigentlich den String "result" kennen? Der ist doch in einer anderen Funktion deklariert 😕 😉

    ich glaub ich hab Hallozinationen, eben hab ich da noch 2 Posts mehr gesehen 😕



  • Woher soll die Funktion "erstellen" eigentlich den String "result" kennen? Der ist doch in einer anderen Funktion deklariert 😕 😉

    Sorry hab geschlafen 😃 jetzt macht es das was ich wollte .
    Danke



  • probiers mal so (zufallsstringlaenge jetzt 10 zeichen):

    #include <iostream>
    #include <fstream>
    #include <string>
    using namespace std;
    string random_string( int length )
    {
    	string result;
    
    	srand( time( NULL ) ); // zufallszahlengenerator initialisieren
    	for( int i = 0; i < length; i++ )
    	{
    		result += rand() % ( 255 + 1 );    
    	}
        return result;
    }
    
    void erstellen( ofstream *file )
    {
    	if( file != NULL )
    		file->open( random_string( 10 ), ios_base::out );
    }
    
    int main()
    {
    	ofstream file;
    	erstellen( &file );
    	if( !file )
    		cout << "fehler beim oeffnen ..." << endl;
    	return 0;
    }
    

    mfg,
    julian



  • #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    void random_string(size_t len, string &str)
    {
    	if(len > 0)
    	{
    		string allowed_chars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    		random_shuffle(allowed_chars.begin(), allowed_chars.end());
    		size_t max_len = allowed_chars.length();
    		if(len > max_len)
    			len = max_len;
    
    		str = allowed_chars.substr(0, len);
    	}
    }
    
    int main(int argc, char* argv[])
    {
    	string random;
    	random_string(15, random);
    	cout << random << endl;
    
    	cin.get();
    	return 0;
    }
    


  • Airdamn schrieb:

    #include <iostream>
    #include <string>
    #include <algorithm>
    using namespace std;
    
    void random_string(size_t len, string &str)
    {
    	if(len > 0)
    	{
    		string allowed_chars = "1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    		random_shuffle(allowed_chars.begin(), allowed_chars.end());
    		size_t max_len = allowed_chars.length();
    		if(len > max_len)
    			len = max_len;
    
    		str = allowed_chars.substr(0, len);
    	}
    }
    
    int main(int argc, char* argv[])
    {
    	string random;
    	random_string(15, random);
    	cout << random << endl;
    
    	cin.get();
    	return 0;
    }
    

    Das Beispiel ist ja schon nicht schlecht, nur wird bei jedem Aufruf der gleiche
    Zufallsstring erzeugt.


Anmelden zum Antworten