Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: С++, Protobuf, преобразование строк  (Прочитано 1204 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kassyopeya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
С++, Protobuf, преобразование строк
« : 05 Июня 2012, 17:17:01 »
Доброго времени суток. Есть ли тут кто-то, кто работал с Google Protobuf и строками?

Стоит следующая задача:
-создать файл proto для сериализации данных в структуру
-получить имя поля структуры из вне типа string (например, "name")
-вызывать метод, который будет записывать значение в соответствующее поле структуры (например, ".set_name")

Cуть проблемы:
т.к. полей в структуре очень много, хотелось бы  принимать строку с именем поля (name) и ассоциировать к нему нужный метод set_ (set_name). При этом избавиться от большого числа case, каждый из которых соответствует какому-то полю.

Вопрос:
Есть ли возможность в Protobuf (сама не нашла) или в c++ преобразовать строку в команду, которую поймет компилятор?

Заранее благодарю! :)

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: С++, Protobuf, преобразование строк
« Ответ #1 : 05 Июня 2012, 18:00:15 »
Вот эти 2 строчки как то между собой не вяжутся.

-получить имя поля структуры из вне типа string (например, "name")
...
Есть ли возможность в Protobuf (сама не нашла) или в c++ преобразовать строку в команду, которую поймет компилятор?

А конкретно 'получить из вне' и 'компилятор'. Либо у нас разное понимание словосочетания 'получить из вне'.
Поясните что вы имеете в виду под этими словами.

Оффлайн kassyopeya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: С++, Protobuf, преобразование строк
« Ответ #2 : 05 Июня 2012, 18:14:15 »
А конкретно 'получить из вне' и 'компилятор'. Либо у нас разное понимание словосочетания 'получить из вне'.
Поясните что вы имеете в виду под этими словами.

Например, пользователь вводит на клавиатуре "name", это слово записывается в строку.
Получаем строку string s, которая содержит в себе слово "name".

Дальше мне надо вызывать метод:
protobuf.set_name(), который будет соответствовать тому name, который задал пользователь.
При чем name может быть разным. Вот мне и надо сопоставить этот name с нужным методом. Пока кроме switch...case ничего не придумала

Оффлайн mkarasik

  • Участник
  • *
  • Сообщений: 163
    • Просмотр профиля
Re: С++, Protobuf, преобразование строк
« Ответ #3 : 05 Июня 2012, 20:15:39 »
Ну так ничего и не придумаешь. Варианты с map или другими структурами данных относятся к типу 'switch case'.

Оффлайн kassyopeya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: С++, Protobuf, преобразование строк
« Ответ #4 : 06 Июня 2012, 00:17:04 »
Ну вот я пока с map и case сделала. Надеялась, что может что-то покрасивей есть...
Спасибо!:)

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: С++, Protobuf, преобразование строк
« Ответ #5 : 06 Июня 2012, 10:21:28 »
"получить из вне" это run time
"поймёт компилятор" это compile time
нестыковочка
компилятор вообще понимает строки. да. map и case
почитай Александресску и фабрики объектов

Оффлайн kassyopeya

  • Автор темы
  • Новичок
  • *
  • Сообщений: 19
    • Просмотр профиля
Re: С++, Protobuf, преобразование строк
« Ответ #6 : 06 Июня 2012, 11:45:32 »
"получить из вне" это run time
"поймёт компилятор" это compile time
нестыковочка
компилятор вообще понимает строки. да. map и case
почитай Александресску и фабрики объектов


Вероятно, неправильно выразилась. Не знала, как объяснить по-другому.
Спасибо.

 

Страница сгенерирована за 0.06 секунд. Запросов: 25.