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 буде створювати директорії.

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

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

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