|
You last visited: Today at 16:05
Advertisement
Ofstream will keinen String ausgeben :(
Discussion on Ofstream will keinen String ausgeben :( within the C/C++ forum part of the Coders Den category.
06/29/2015, 14:11
|
#1
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
Ofstream will keinen String ausgeben :(
Hey, ich versuche zur Zeit mein "random" Passwort in einer .txt Datei ausgeben zu lassen, dass will aber einfach nicht passieren.
Ich hab schon mehrere Methoden versucht aber keine hat mir geholfen.
Die Methode die ihr jetzt im Code sehen werdet war die Letzte, die ich versucht hab.
Code:
Code:
#include <iostream>
#include <Windows.h>
#include <string>
#include <cmath>
#include <fstream>
#pragma comment(lib, "winmm.lib")
int main()
{
static const TCHAR* myTitle = TEXT("Passwort-Generator");
SetConsoleTitle(myTitle);
char Buchstaben[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
std::string Passwort;
int laenge;
int erstelle;
int x = 0;
srand(timeGetTime()); // Seed für "rand()", basierend auf der aktuellen Zeit
std::cout << "Wie lang soll das Passwort werden: ";
std::cin >> laenge;
std::cout << "Wie viele Passwoerter sollen erstellt werden: ";
std::cin >> erstelle;
for (int j = 0; j < erstelle; j++)
{
for (int i = 0; i < laenge; i++)
{
Passwort += Buchstaben[rand() % (sizeof(Buchstaben))];
}
std::cout << Passwort << "\n";
Passwort = "";
// Datei öffnen und Passwörter reinschreiben
std::ofstream schreiben;
schreiben.open("Test.txt", std::ios::binary);
schreiben << Passwort;
schreiben.close();
}
getchar();
return 0;
}
Oh^^
Mir fällt grad auf, dass es nicht sinnvoll wäre die
Code:
std::ofstream schreiben;
in der Schleife zu lassen.
|
|
|
06/29/2015, 15:25
|
#2
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Du setzt das Passwort auf "", bevor du es ausgibst.
|
|
|
06/29/2015, 15:37
|
#3
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
Quote:
Originally Posted by C0untLizzi
Du setzt das Passwort auf "", bevor du es ausgibst.
|
Hab das mal verschoben und nun klappt es, allerdings wird nur 1 Passwort reingeschrieben, nähmlich das Letzte welches erstellt wird.
|
|
|
06/29/2015, 16:05
|
#4
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Liegt daran, dass du den stream immer neu erstellst und die Datei dadurch immer überschrieben wird.Wenn du den Mode beim öffnen auch noch auf app (=append) setzt, sollte das so klappen. Oder du öffnest den Stream vor der Schleife und schließt in danach.
|
|
|
06/29/2015, 20:50
|
#5
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
Sooooo fast geschaft 
Nur der Zeilenumbruch macht mir zu schaffen -.-
Weil in der .txt Datei schaut es nun so aus:
C
Cb
Cbr
CbrF
CbrFY
4
4W
4WK
4WKP
4WKPP
Y
Yr
Yrm
Yrmu
YrmuK
z
zC
zCd
zCdj
zCdjU
m
mp
mpa
mpa7
mpa7G
Hier der Aktuelle Code:
Code:
#include <iostream>
#include <Windows.h>
#include <string>
#include <cmath>
#include <fstream>
#pragma comment(lib, "winmm.lib")
int main()
{
static const TCHAR* myTitle = TEXT("Passwort-Generator");
SetConsoleTitle(myTitle);
std::ofstream schreiben;
char Buchstaben[] = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789";
std::string Passwort;
int laenge;
int erstelle;
int x = 0;
srand(timeGetTime()); // Seed für "rand()", basierend auf der aktuellen Zeit
std::cout << "Wie lang soll das Passwort werden: ";
std::cin >> laenge;
std::cout << "Wie viele Passwoerter sollen erstellt werden: ";
std::cin >> erstelle;
schreiben.open("Test.txt", std::ios::app| std::ios::out);
for (int j = 0; j < erstelle; j++)
{
for (int i = 0; i < laenge; i++)
{
Passwort += Buchstaben[rand() % (sizeof(Buchstaben))];
// Datei schreiben
schreiben << Passwort << (char)0x0D << (char)0x0A;
}
std::cout << Passwort << "\n";
Passwort = "";
}
schreiben.close();
getchar();
getchar();
getchar();
getchar();
return 0;
}
|
|
|
06/29/2015, 21:06
|
#6
|
elite*gold: 46
Join Date: Oct 2010
Posts: 782
Received Thanks: 525
|
Schreib die Variable Passwort einfach nach der inneren For Schleife in die Datei. Also da, wo du sie in der Konsole ausgibst. Ein "\n" oder "\r\n" danach in die Datei zu schreiben ( oder halt std::endl, wenn du den Stream auch noch flushen willst) sollte dann reichen.
|
|
|
06/29/2015, 21:18
|
#7
|
elite*gold: 312
Join Date: May 2013
Posts: 449
Received Thanks: 45
|
Quote:
Originally Posted by C0untLizzi
Schreib die Variable Passwort einfach nach der inneren For Schleife in die Datei. Also da, wo du sie in der Konsole ausgibst. Ein "\n" oder "\r\n" danach in die Datei zu schreiben ( oder halt std::endl, wenn du den Stream auch noch flushen willst) sollte dann reichen.
|
Danke für die Hilfe klappt nun einwandfrei 
#closerequest
|
|
|
06/29/2015, 21:25
|
#8
|
elite*gold: 724
Join Date: Mar 2011
Posts: 10,479
Received Thanks: 3,318
|
Noch als Tipp:
1) RAII nutzen. Du musst std:  fstream::close() nicht aufrufen, das wird im Destruktor aufgerufen. Die Password-Variable erst in der for-Loop deklarieren.
2) Konstruktor nutzen. Wenn es keinen Grund dafür gibt, die Datei erst später zu öffnen, kannst du Dateinamen + Flags direkt beim Deklarieren übergeben und die Datei wird automatisch geöffnet.
3) <random> verwenden statt rand()
#closed (on request)
|
|
|
 |
Similar Threads
|
[C#] Nach Zeichenkette in String suchen und ausgeben lassen?
11/17/2012 - .NET Languages - 4 Replies
Moin,
will in einer PictureBox den Captcha von der Google-Mail Registrierung anzeigen lassen. Natürlich ist das nicht einfach über eine ID oder den name aufrufbar, also muss ich hier ganz klar den Quelltext der Seite nach einer bestimmten Zeichenkette durchsuchen, die Position davon + oder - ein paar Stellen nehmen (da sich die URL zum Captcha ja immer ändert).
Irgendwie will das so aber nicht ganz bei mir. Dass ich hier IndexOf() und SubString() brauche ist mir auch klar, ich bekomms aber...
|
[Java]Array vom Typ String > Inhalt ausgeben lassen
10/30/2012 - General Coding - 2 Replies
Ahoi epvp,
String array= {"x", "y"};
Es handelt sich um diesen Array vom Typ String.
Der befindet sich in Klasse "mitarbeiterSuche", allerdings
will ich ihn in der Klasse "main" ausgeben.
Woran kann das liegen? Eclipse sagt mir dauernd:
"array cannot be resolved to a variable"
|
[Visual Basic] [Problem] String auslesen/String zufällig wählen
05/06/2012 - General Coding - 4 Replies
Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Name Generator", 236, 299, 815, 246)
$Input1 = GUICtrlCreateInput("Username", 24, 72, 185, 21)
$Input2 = GUICtrlCreateInput("Username", 24, 104, 185, 21)
$Input3 = GUICtrlCreateInput("Username", 24, 136, 185, 21)
$Input4 = GUICtrlCreateInput("Username", 24, 168, 185, 21)
$Input5 = GUICtrlCreateInput("Username", 24, 200, 185, 21)
|
[C/C++]ofstream::open
04/03/2011 - C/C++ - 6 Replies
Hallo Leute ;D
Ich habe eine Frage. Undzwar brauche ich eine Funktion aus der Klasse ofstream die überprüft ob eine Datei schon erstellt wurde.
Ungefähr soewtas in der Art:
#include<fstream>
#include<iostream>
int main(){
bool rdy=false;
int i=1;
|
Geile Waffen und Itims aber keinen Cent ausgeben?
03/06/2011 - Combat Arms - 3 Replies
Hey Leute,
Ich will euch heute Einen weg vorstellen an waffen und itims die ihr eig mit echten geld kaufen müsst ranzukommen:
1. Schritt:
-> http://www.*********.com/HomeMain.cf...D=manfred26 693
(Da wo die sterne im Link sind fügt ihr einfach 'AWsu.rveys' OHNE den Punkt zwischen u und r ein. Keine ahnung wieso da sterne sind, ist emin 1. Tutorial :/ )
|
All times are GMT +1. The time now is 16:06.
|
|