powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Наменования элемента структуры
7 сообщений из 7, страница 1 из 1
Наменования элемента структуры
    #34400513
жжёт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня есть структура
Код: plaintext
1.
2.
3.
4.
typedef struct {
        short save;
        short print;
} Options;
Options opt;
Требуется переменной типа string присвоить наименование элемента структуры. Т.е
Код: plaintext
1.
string strname = string("");
strname = ???opt.save???
Чтобы в результате
strname = "save" . Как такое сделать?
...
Рейтинг: 0 / 0
Наменования элемента структуры
    #34400641
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жжётУ меня есть структура
Код: plaintext
1.
2.
3.
4.
typedef struct {
        short save;
        short print;
} Options;
Options opt;
Требуется переменной типа string присвоить наименование элемента структуры. Т.е
Код: plaintext
1.
string strname = string("");
strname = ???opt.save???
Чтобы в результате
strname = "save" . Как такое сделать?
Можно только так
Код: plaintext
1.
2.
3.
# define TO_STRING(x) #x
...
  strname = TO_STRING(opt.save); // тоже что, strname = "opt.save";
...
Рейтинг: 0 / 0
Наменования элемента структуры
    #34400968
жжёт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blinded
Можно только так
Код: plaintext
1.
2.
3.
# define TO_STRING(x) #x
...
  strname = TO_STRING(opt.save); // тоже что, strname = "opt.save";

Спасибо, работает.
Тогда в продолжение вопрос:
А как в цикле пробежаться по всем элементам структуры? Для чего надо. В структуре у меня хранятся данные и по нажатию кнопки я хочу выводить все данные структуры в поля с наименованием "edt_" + наименование элемента структуры:

Код: plaintext
1.
2.
3.
4.
5.
        TEdit *edtEdit;
        while(???opt???){
                string name = TO_STRING(opt.save);
                edtEdit = dynamic_cast<TEdit*>(FindComponent("edt_" + name.substr( 4 ,strlen(name.c_str())).c_str()));
                edtEdit->Text = ???;
        }
...
Рейтинг: 0 / 0
Наменования элемента структуры
    #34401030
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жжёт blinded
Можно только так
Код: plaintext
1.
2.
3.
# define TO_STRING(x) #x
...
  strname = TO_STRING(opt.save); // тоже что, strname = "opt.save";

Спасибо, работает.
Тогда в продолжение вопрос:
А как в цикле пробежаться по всем элементам структуры? Для чего надо. В структуре у меня хранятся данные и по нажатию кнопки я хочу выводить все данные структуры в поля с наименованием "edt_" + наименование элемента структуры:

Код: plaintext
1.
2.
3.
4.
5.
        TEdit *edtEdit;
        while(???opt???){
                string name = TO_STRING(opt.save);
                edtEdit = dynamic_cast<TEdit*>(FindComponent("edt_" + name.substr( 4 ,strlen(name.c_str())).c_str()));
                edtEdit->Text = ???;
        }

Ох-ох
Вообще-то по элементам структуры пробежать нельзя. Я тебя обманул, все что было сделано - работа препроцессора. А вам советую воспользоваться дебагером а не городить не пойми-что, все равнл не получитсяю Следующим вопросом станет: а что делать с вложенными структурами
...
Рейтинг: 0 / 0
Наменования элемента структуры
    #34401059
жжёт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
blinded жжёт blinded
Можно только так
Код: plaintext
1.
2.
3.
# define TO_STRING(x) #x
...
  strname = TO_STRING(opt.save); // тоже что, strname = "opt.save";

Спасибо, работает.
Тогда в продолжение вопрос:
А как в цикле пробежаться по всем элементам структуры? Для чего надо. В структуре у меня хранятся данные и по нажатию кнопки я хочу выводить все данные структуры в поля с наименованием "edt_" + наименование элемента структуры:

Код: plaintext
1.
2.
3.
4.
5.
        TEdit *edtEdit;
        while(???opt???){
                string name = TO_STRING(opt.save);
                edtEdit = dynamic_cast<TEdit*>(FindComponent("edt_" + name.substr( 4 ,strlen(name.c_str())).c_str()));
                edtEdit->Text = ???;
        }

Ох-ох
Вообще-то по элементам структуры пробежать нельзя. Я тебя обманул, все что было сделано - работа препроцессора. А вам советую воспользоваться дебагером а не городить не пойми-что, все равнл не получитсяю Следующим вопросом станет: а что делать с вложенными структурами
Да понял я, что это предпроцессор. Просто у меня в структуре очень много элементов и хотел избавиться от излишков кода. Может есть варианты хранить данные как-то по другому. Внешние "хранилища" типа БД и файлов не годятся
...
Рейтинг: 0 / 0
Наменования элемента структуры
    #34401197
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
жжёт
Да понял я, что это предпроцессор. Просто у меня в структуре очень много элементов и хотел избавиться от излишков кода. Может есть варианты хранить данные как-то по другому. Внешние "хранилища" типа БД и файлов не годятся
О как припекло
Можно только все равно что структуру 2 раза определить. будет примерно так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
struct SomeStruct : public EditableStruct
{
  std::string         someString;
  int                    someInt;
  AnotherStruct     anotherStruct;

  BEGIN_DESCRIPTION()
    STRING_FIELD(someString)
    INT_FIELD(someInt)
    STRUCT_FIELD(anotherStruct)
  END_DESCRIPTION
}
Только писанины будет немало. Оно тебе действительно надо? Ты подумай хорошенько.
...
Рейтинг: 0 / 0
Наменования элемента структуры
    #34401476
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не надо таким страшным образом подстроку вырезать
вообщето src.substr(<pos>) отрезает до конца строки
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Наменования элемента структуры
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]