Изменить тип сохранения файла

У меня есть генератор паролей,он ниже.При запуске и окончании создании,он сохраняет файл.Но этот файл типа: file ,а мне надо чтобы сохранялось как блокнот.Прошу либо переписать полностью программу как мне хочется.Либо подсказать как,и показать где именно. Код:
#include "stdafx.h"
#include <iostream>
#include <algorithm>
#include <time.h>
#include <stdlib.h>
#include <fstream>
 
using std::cout;
using std::cin;
using std::endl;
 
class PassGen {
 
public:
    void displayMessage()
    {
        int passLenght;
        int numOfPasswords;
        char * filename = new char;
        setlocale(LC_ALL, "Russian");
        cout << "Введите длину пароля для генерации: ";
        cin >> passLenght;
        cout << "Введите количество паролей для генерации: ";
        cin >> numOfPasswords;
        cout << "Будет сгенерировано паролей: " << numOfPasswords << "." << endl;
        cout << endl;
        cout << "Введите имя файла для записи: ";
        cin >> filename;
 
        std::ofstream outFile(filename);
 
        for (int k = 0; k < numOfPasswords; k++) {
            for (int i = 0; i < passLenght; ++i) {
                numOfChars(passLenght);
                passGenerator(passLenght);
                outFile << password[i];
            }
            outFile << endl;
        }
        outFile.close();
 
        cout << "Пароли успешно сгенерированы и записаны в файл " << filename << "" << endl;
    }
 
    void passGenerator(int passLenght)
    {
        password = new char[passLenght];
 
        for (int i = 0; i < numOfNumbers; ++i) {
            password[i] = char(rand() % 10 + 48);
        }
        for (int i = numOfNumbers; i < numOfNumbers + numOfBigChars; ++i) {
            password[i] = char(rand() % 26 + 65);
        }
        for (int i = numOfNumbers + numOfBigChars; i < passLenght; ++i) {
            password[i] = char(rand() % 26 + 97);
        }
        std::random_shuffle(password, password + passLenght);
    }
 
    void numOfChars(int passLenght)
    {
        numOfSmallChars = rand() % passLenght;
        int charRandEnd = passLenght - numOfSmallChars;
        numOfBigChars = rand() % charRandEnd;
        numOfNumbers = passLenght - numOfSmallChars - numOfBigChars;
    }
 
private:
    int numOfSmallChars;
    int numOfBigChars;
    int numOfNumbers;
    char * password;
};
 
int main()
{
    srand(time(NULL));
    PassGen * pass = new PassGen;
    pass->displayMessage();
    return 0;
}
7 ответов

так указывай при вводе filename расширение файла: out.txt в крайнем случае дописывай .txt к falename


так указывай при вводе filename расширение файла: out.txt в крайнем случае дописывай .txt к falename
Можешь сказать в какой строке,а желательно чтобы написал целую строку


cout << "Введите имя файла для записи: ";
cin >> filename;
в этот момент в консоли вводишь passwords.txt - это частный случай
char * filename = new char;
тут filename вообще пустой остается, либо выделяй массив, т.е.
char * filename = new char[20]; // например 19 символов + \0
либо используй std::string filename; ну и для случая него небольшой код:
std::string filename;
cin >> filename;
size_t found = filename.find(".txt");
if (found == std::string::npos || (found + 4) != filename.size())
   filename += ".txt";
std::ofstream outFile(filename);


в этот момент в консоли вводишь passwords.txt - это частный случайтут filename вообще пустой остается, либо выделяй массив, т.е.
char * filename = new char[20]; // например 19 символов + \0
либо используй std::string filename; ну и для случая него небольшой код:
std::string filename;
cin >> filename;
size_t found = filename.find(".txt");
if (found == std::string::npos || (found + 4) != filename.size())
   filename += ".txt";
std::ofstream outFile(filename);
либо используй std::string filename; ну и для случая него небольшой код:
Блин,я не очень тебя понимаю,не можешь ли ты просто исправить?Я буду безумно благодарен !


#include <string> // добавили
// ... - твой код
std::string filename;  // поменяли, было char *
// ...  - твой код
cout << "Введите имя файла для записи: ";
cin >> filename;  // знакомый тебе участок твоего кода
 
// а вот это мы вставим
size_t found = filename.find(".txt");
if (found == std::string::npos || (found + 4) != filename.size())
   filename += ".txt";
 
std::ofstream outFile(filename); // опять знакомый участок кода
// ... - твой код


Огроменное тебе спасибо!Если что буду писать в лс!Ты спас!


Если что буду писать в лс!