Zufalstring generieren
-
Hört sich ziemlich komplex an .
Ok es reicht mir auch wenn der folgende Befehl eine int akzeptiert , ist das machbar?int a =1;
ofstream file(int i , ios_base::out);um in Datei zu schreiben die 1 heißt.Es muss aber in meinem Fall als Variable deklariert werden.
-
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.