С Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
#1

Как на основе того что лежит в переменной сделать переменную в объекте? - C++

23.08.2014, 20:13. Просмотров 1014. Ответов 27
Метки нет (Все метки)

1. Ну есть у нас переменная
C++
1
2
string arg1 = "MyVar";
string arg2 = "propereties";
и потом можно было обратится через объект
C++
1
cout << object.MyVar; //отобразит propereties
2. Но может такое быть что эти значения лежат еще в одном контейнере, и тогда
C++
1
string container[] = "{name:valera, x:100, y:100}","{name: vova, x:110, y:70}";//это чисто приблизительно
и потом можно было бы получить значения с помощью
C++
1
 cout << object.container[0].name; //вернет valera
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.08.2014, 20:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как на основе того что лежит в переменной сделать переменную в объекте? (C++):

Верно ли, что в основе фабрики лежит наследование классов? - C++
Сори за глупый вопрос, но правильно ли я понял, что в основе фабрики лежит наследование классов?

Нашел в схожей теме не могу понять в чем ошибка. Кроме того как конкретно сделать что были високосные года? - C++
Пользователь вводит две даты (день, месяц, год в виде целых чисел). Необходимо определить и вывести количество дней между этими двумя...

Не изменяется значение переменной в объекте - C++
Переменная health меняет своё значение только внутри функции punch(), при этом её значение в объектах a и b остаётся неизменным. Как...

Можно ли как нибудь явно указать тип переменной, чтобы ИДЕ рассказала мне все что я хочу знать об объекте? - PHP
Можно как нибудь указать тип, но не через оператор new...

Как из переменной окружения сделать обычную переменную? - Bash
В общем, такая ситуация: нужно переменную окружения PATH сделать обычной переменной. Каким образом это можно сделать?

Цифра в текстовой переменной - как сделать цифровую переменную - PHP
Есть ли простое решение? Итак есть текстовая переменная, которая является простым числом (почему не знаю, передаётся через форму в...

27
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
23.08.2014, 20:17 #2
Хранить ассоциативный контейнер, где ключем будет строка, значением - какой-то объект
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
23.08.2014, 20:20  [ТС] #3
а поточнее, я нуб полный но очень чешется эту штуку реализовать.
Я соглашусь и на что-то вроде
C++
1
object.block["container"][0]["name"]
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
23.08.2014, 20:24 #4
В простейшем случае:
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <map>
#include <string>
 
int main() {
    std::map<std::string, int> m = {
        {"one", 1},
        {"two", 2}};
        
    std::cout << m["one"] << std::endl;
}
http://ideone.com/J1b8Gz

Добавлено через 1 минуту
Если нужно что-то близкое к Json, то ищем любую библиотеку работы с Json (e.g. JsonCpp).
А лучше уточнить какая задача решается.
2
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
23.08.2014, 20:30  [ТС] #5
А что это за <> первый раз вижу, ну ладно, сейчас будем разбираться!!!

Добавлено через 4 минуты
Задача решается написанием парсера наподобие json, ибо я уже 10 парсеров пробывал, толи я туплю, толи поезд не едет.
Но очень понравилась обработка json в java script
0
NeonLost
Пес войны
75 / 86 / 3
Регистрация: 23.02.2012
Сообщений: 653
23.08.2014, 20:31 #6
Цитата Сообщение от Валеркуй Посмотреть сообщение
А что это за <> первый раз вижу, ну ладно, сейчас будем разбираться!!!
то, что ты хочешь похоже на JSON формат данных...)
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
23.08.2014, 20:32  [ТС] #7
Это и есть он, но я чуть исковеркал)))
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
23.08.2014, 20:34 #8
Цитата Сообщение от Валеркуй Посмотреть сообщение
Задача решается написанием парсера наподобие json
Или использованием готового и решением проблем уже с ним.
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
23.08.2014, 20:45  [ТС] #9
Цитата Сообщение от 0x10 Посмотреть сообщение
готового
ну как его использовать ну скачал я ваш парсер, пробовал его до создания темы. Что-то не вышло и я плюнул на это. Если у вас есть свободное время, пожалуйста напишите здесь как распарсить например это чудо:
JSON
1
2
3
4
5
6
7
8
{
"name":"listen",
"employees":[
    {"firstName":"John", "lastName":"Doe"}, 
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]
}
и моей радосте не будет предела

Добавлено через 1 минуту
Звпустил С++ подключил инклюды и написал в main.cpp
C++
1
2
3
4
#include <json/json.h>
int main(){
   return 0;
}
Что дальше?
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
23.08.2014, 20:51 #10
Прмеры есть в документации.
http://jsoncpp.sourceforge.net/old.html
Подробнее о сборке библиотеки и генерации документации - в redame: https://github.com/open-source-parsers/jsoncpp
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
24.08.2014, 11:13  [ТС] #11
вы так и не ответили на мой вопрос. Если нет времени так напишите, зачем стрелки переводить?
0
Alex5
1102 / 763 / 119
Регистрация: 12.04.2010
Сообщений: 1,934
24.08.2014, 11:58 #12
Цитата Сообщение от Валеркуй Посмотреть сообщение
и потом можно было бы получить значения с помощью
C++
1
 cout << object.container[0].name; //вернет valera
Валеркуй, может Вам такой вариант подойдёт:
C++
1
2
3
4
5
6
7
8
9
10
11
struct MyData
{
    string name;
    int x;
    int y;
};
 
    MyData d;
    d.name = "valera";
    d.x = 123;
    d.y = 456;
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
24.08.2014, 12:35 #13
Цитата Сообщение от Валеркуй Посмотреть сообщение
зачем стрелки переводить?
Вопрос был:
Цитата Сообщение от Валеркуй Посмотреть сообщение
Что дальше?
Все как обычно. Библиотеку нужно собрать, подключить, написать код, который ее использует. Как сделать это все - написано подробно в документации, и я не вижу смысла копипастить, поэтому и дал прямые ссылки. Есть конкретные вопросы - задавайте, при условии что ответов на них нет в официальной документации.
0
Валеркуй
2 / 2 / 0
Регистрация: 17.06.2013
Сообщений: 122
24.08.2014, 15:28  [ТС] #14
Ключевое слово
Цитата Сообщение от 0x10 Посмотреть сообщение
собрать
как ее вообще можно собрать??? многофайлов и папок и половина без расширений потом py скрипты которых запускаешь и они ниче не делают и файлы какие-то типа dox.
Так первая папка: devtools открываю
6 py скриптов 2 json файлик и все.
Так открываю первый скрипт #module и все. Спрашивается зачем???

Следующий папка doc во, тут очень интересно!!!
doxyfile.in
многабукаф после решеток и иногда какие-то параметры капсом писали))
так тут 2 html файла открыли как и закрыли ничего содержательного....
jsoncpp.dox что за формат не совсем понятно, ну да ладно, блокнот никто не отменял!!!
Во!!! Предысловие: Это легкий формат данных бла бла и пример сразу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Configuration options
{
    // Default encoding for text
    "encoding" : "UTF-8",
    
    // Plug-ins loaded at start-up
    "plug-ins" : [
        "python",
        "c++",
        "ruby"
        ],
        
    // Tab indent size
    "indent" : { "length" : 3, "use_space": true }
}
Ага ну понятно json данные... Дальше
описаны пару особенностей не интересно...
Пока переключался обнаружил файл readme.txt ага там ссылка на сайт, качаю...
Пока качается про себя матерюсь неужели тебе в падлу было pdf файлик сделать хотябы...
Ухты я ее каким-то чудом запустил и она сгенерила мне html странички )
Ничего интересного не нашел... Нашел ссылку какую-то под жирным словом Build instructions на файл read.md
там многобукафф было и ссылки что нужно как-то собрать но как - хз.

Забрел в папку makefile там sln файл был, я его сейчас запустил думаю что делать дальше...
Запустил первый же пример там 3 проекта добавилось, вроде построилось, вылезло какое-то окошко что-то хотело ввести, я написал оно сказало нет такого файла и я я его закрыл, потом я свернус vs8 и посмотрел в ту папку где я открыл sln пару-файлов каких-то добавилось... Потом посмотрел и заметил что добавилась какая-то папка build ну что, заглянем?

Так, что видим сделал скрин прям
Картинка 1
как я помню файл с расширением lib моно подключить через линковщик, ток не знаю зачем файлы с расширением .obj?
Никогда не смотрел в файл buildlog.hml решил посмотреть))
Обнаружил что сборка была в режиме debug хм, а что если relis поставить?
И тут... Я обнаружил что кто-то вставил третий режим!!! dummy какой-то!
Компилим... ищю в деректории build этот dummy ничего не нахожу, заглянул туда где нашел sln опача а тут эта папка
Захожу, а там...
http://firepic.org/images/2014-08/24/dvwyf6b3xwvm.png
dllка? А что она тут делает? Ну да фиг с ним, решаю это дело до компиляции relis генериться еще одна либа... также как и дебаг! НО! Это был проект jsontest а я вообще то накомпилил))) Ну попытаюсь подключить...

указал в линковщике на сгенерированную lib и paragma comet
и поехали 60 ошибко виде
1>msvcprtd.lib(MSVCP90D.dll) : error LNK2005: "public: __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::~basic_string<char,struct std::char_traits<char>,class std::allocator<char> >(void)" (??1?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAE@XZ) уже определен в json_vc71_libmtd.lib(json_value.obj)

Подтверждаю тот факт что я - дебил... Думаю попутно де согрешил...
Удаляю папку где все было. Распаковываю новую!

Делаю тоже самое результат тотже))
Так, что я могу сказать: я дупачек! А вы мне помогите плиз где на так наделал...
0
0x10
2486 / 1661 / 249
Регистрация: 24.11.2012
Сообщений: 4,136
24.08.2014, 16:21 #15
Не буду отвечать на этот поток сознания по цитатам. Но выглядит это как: "Паника-паника, бегаем по каталогам, тыкаем все подряд".

1. В Readme описано два варианта сборки: с помощью CMake или SCons. Как это сделать - как раз описано, читайте внимательнее.
2. CMake и SCons генерят Мейкфайлы, проекты и т д. В случае использования студии - Солюшены.
3. Как уже было замечено, солюшен в репозиторий заботливо добавлен готовый: jsoncpp\makefiles\msvc2010\jsoncpp.sln
Поэтому нам можно ничего не генерить.
Открываем.
Вот тут вопрос: студией пользуетесь, солюшн дан, какие конкретные вопросы по сборке?

Процедура сборки стандартная для студии. Build -> Build Solution.

Все. Куча текста, но суть - открыть один файл, нажать одну кнопку.
Результат сборки - статическая библиотека jsoncpp\makefiles\msvc2010\Release\lib_json.lib
Использование стандартное - как и любой другой статической библиотеки.
0
24.08.2014, 16:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2014, 16:21
Привет! Вот еще темы с ответами:

Как сделать переменную с использованием в названии значения другой переменной? - C#
Как осуществить так сказать использование значения переменной в названии другой переменной for (int i = 1; i &lt;= 3; i++) { ...

Записать логическое условие того, что точка лежит внутри фигуры - Turbo Pascal
3. Записать логическое условие того, что точка с координатами (х,у) лежит внутри фигуры, изображенной на рисунке.

Как присвоить переменной по нажатию кнопки значение того что введется в текстбокс? - C#
в общем есть 2 кнопки и 2 текст бокса, нужно чтобы при нажатии на первую введенный текст становился значением переменной, а при нажатии на...

Вероятность того, что точка лежит вне круга, вписанного в этот треугольник - Теория вероятностей
В правильном треугольнике со стороной 16 см случайным образом выбирают точку. Какова вероятность того, что точка лежит вне круга вписанного...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.