1

Тема: Зробити helper при створенні C++ проєкта

Я не знаю, як пояснити те, що мені треба

#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
ofstream file("classes");
struct Ierarchy
{
    char* name;
    int in;
    void setname(int i, char* n)
    {
        in=i;
        name=new char[strlen(n)+1];
        name[sizeof(n)+1]=0;
        for (int ii=0; ii<strlen (n); ii++) name[ii]=n[ii];
    }
    void coutsave()
    {
        for (int i=0; i<in+1; i++) cout << "-";
        cout << name << endl;
        for (int i=0; i<in+1; i++) file << "-";
        file << name << endl;
        
        cout << "1 = new Ierarchy, 0 = Exit ";
        bool b;
        cin >> b;
        if(b){
            Ierarchy newi;
            char newname[100];
            cout << "Enter name:  ";;
            cin >> newname;
            newi.setname(in+1, newname);
            newi.coutsave();
        }
        else cout << endl;
        return;
    }
};
int main()
{
    Ierarchy ir;
    ir.setname(0, "Root");
    ir.coutsave();
    return 0;
}

Те, що вводив, не збереглося.
Вихід:

-Root
--String
---Block
----InfoTypeÿÿÿÿ
-----Good
------Type
-------Internalÿÿÿÿ

До-речі, тут воно як "ÿÿÿÿ" а в редакторі Dev-Cpp як "яяяя".
Це була перша проблема. А друга проблема у тому, що я хочу якось повернутися до Block, щоб ввести ще одну підкатегорію, а замість цього - вихід з програми.
Ну і щоб кожна підкатегорія створювала папку з її назвою,
в кожну папку клався файл з цією ж назвою та розширенням *.h
та вмістом

#ifndef __subcatname_h
#define __subcatname_h

#endif

Або ще краще кілька файлів *.h, *.rc, *.cpp з шаблонним вмістом.
Як це зробити?

2

Re: Зробити helper при створенні C++ проєкта

Я трохи підправив код:

#include <iostream>
#include <fstream>
#include <windows.h>
using namespace std;
ofstream file("classes");
struct Ierarchy
{
    char* name;
    int in;
    void setname(int i, char* n)
    {
        in=i;
        name=new char[strlen(n)+1];
        name[sizeof(n)+1]=0;
        for (int ii=0; ii<strlen (n); ii++) name[ii]=n[ii];
    }
    void coutsave()
    {
        for (int i=0; i<in+1; i++) cout << "-";
        cout << name << endl;
        for (int i=0; i<in+1; i++) file << "-";
        file << name << endl;
        bool b;
        while(true)
        {
            cout << "1 = new Ierarchy, 0 = Exit ";
            cin >> b;
            if(b){
                Ierarchy newi;
                char newname[100];
                cout << "Enter name:  ";;
                cin >> newname;
                newi.setname(in+1, newname);
                newi.coutsave();
            }
            else {
                cout << endl;
                file << endl;
                break;
            }
        }
    }
};
int main()
{
    Ierarchy ir;
    ir.setname(0, "Root");
    ir.coutsave();
    return 0;
}

Вхід:

-Root
1 = new Ierarchy, 0 = Exit 1
Enter name:  Class1
--Class1
1 = new Ierarchy, 0 = Exit 0

1 = new Ierarchy, 0 = Exit 1
Enter name:  Class2
--Class2
1 = new Ierarchy, 0 = Exit 0

1 = new Ierarchy, 0 = Exit 1
Enter name:  Class3
--Class3
1 = new Ierarchy, 0 = Exit 0

1 = new Ierarchy, 0 = Exit 1
Enter name:  Class4
--Class4
1 = new Ierarchy, 0 = Exit 0

1 = new Ierarchy, 0 = Exit 1
Enter name:  Class5
--Class5
1 = new Ierarchy, 0 = Exit 0

1 = new Ierarchy, 0 = Exit 0

Вихід (12 рядків):

-Root
--Class1

--Class2

--Class3

--Class4

--Class5

Але коли ввожу Subclass1, то на виході (+безкінечність рядків):

-Root
--Class1

--Class1

--Class1

--Class1

--Class1

--Class1

--Class1
...

return у попередньому випадку завершував всю функцію, то я вже розумів. Поставив цикл, він буде працювати і при return. Та щоб не наступати на граблі, замість return додав break;

3

Re: Зробити helper при створенні C++ проєкта

тобі треба дерево? то роби дерево. А оцю бабуйню забудь

Подякували: rosh5ko77a1

4

Re: Зробити helper при створенні C++ проєкта

Так, дійсно це переведення купи часу в нікуди.
Вручну написав би його швидше :)
Якщо не рахувати що папки я створюю все ж повільніше від CreateDirectory(). Хм... Тоді треба зробити парсер, який із вручну створеного classes буде створювати директорії.

▼для чого мені потрібна ця бабуйня

ідеальний проект, особливо проект бухгалтерського обліку, має для кожного класу створювати окрему директорію

Хоча я зізнаюсь, я тріпло, бо замість того аби робити проєкт тріпав язиком, на форумах, та й нічого не зробив.