2 / 2 / 3
Регистрация: 17.06.2013
Сообщений: 122
1

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

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

Author24 — интернет-сервис помощи студентам
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)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.08.2014, 20:13
Ответы с готовыми решениями:

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

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

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

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

27
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
23.08.2014, 20:17 2
Хранить ассоциативный контейнер, где ключем будет строка, значением - какой-то объект
0
2 / 2 / 3
Регистрация: 17.06.2013
Сообщений: 122
23.08.2014, 20:20  [ТС] 3
а поточнее, я нуб полный но очень чешется эту штуку реализовать.
Я соглашусь и на что-то вроде
C++
1
object.block["container"][0]["name"]
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
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 / 3
Регистрация: 17.06.2013
Сообщений: 122
23.08.2014, 20:30  [ТС] 5
А что это за <> первый раз вижу, ну ладно, сейчас будем разбираться!!!

Добавлено через 4 минуты
Задача решается написанием парсера наподобие json, ибо я уже 10 парсеров пробывал, толи я туплю, толи поезд не едет.
Но очень понравилась обработка json в java script
0
Пес войны
111 / 88 / 22
Регистрация: 23.02.2012
Сообщений: 653
23.08.2014, 20:31 6
Цитата Сообщение от Валеркуй Посмотреть сообщение
А что это за <> первый раз вижу, ну ладно, сейчас будем разбираться!!!
то, что ты хочешь похоже на JSON формат данных...)
0
2 / 2 / 3
Регистрация: 17.06.2013
Сообщений: 122
23.08.2014, 20:32  [ТС] 7
Это и есть он, но я чуть исковеркал)))
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
23.08.2014, 20:34 8
Цитата Сообщение от Валеркуй Посмотреть сообщение
Задача решается написанием парсера наподобие json
Или использованием готового и решением проблем уже с ним.
0
2 / 2 / 3
Регистрация: 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
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
23.08.2014, 20:51 10
Прмеры есть в документации.
http://jsoncpp.sourceforge.net/old.html
Подробнее о сборке библиотеки и генерации документации - в redame: https://github.com/open-source-parsers/jsoncpp
0
2 / 2 / 3
Регистрация: 17.06.2013
Сообщений: 122
24.08.2014, 11:13  [ТС] 11
вы так и не ответили на мой вопрос. Если нет времени так напишите, зачем стрелки переводить?
0
1130 / 789 / 232
Регистрация: 12.04.2010
Сообщений: 2,012
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
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
24.08.2014, 12:35 13
Цитата Сообщение от Валеркуй Посмотреть сообщение
зачем стрелки переводить?
Вопрос был:
Цитата Сообщение от Валеркуй Посмотреть сообщение
Что дальше?
Все как обычно. Библиотеку нужно собрать, подключить, написать код, который ее использует. Как сделать это все - написано подробно в документации, и я не вижу смысла копипастить, поэтому и дал прямые ссылки. Есть конкретные вопросы - задавайте, при условии что ответов на них нет в официальной документации.
0
2 / 2 / 3
Регистрация: 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 опача а тут эта папка
Захожу, а там...

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
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
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
2 / 2 / 3
Регистрация: 17.06.2013
Сообщений: 122
24.08.2014, 16:52  [ТС] 16
У меня vs2008 я же говорил, подключал я эту либу, а она ошибки бьет! И много притом!!!!

Добавлено через 18 секунд
может видео снять, а?
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
24.08.2014, 17:02 17
Лучший ответ Сообщение было отмечено Валеркуй как решение

Решение

Ок, там рядом есть каталог vs71. В нем, как я вижу, все собирается.
Делаем одноименные сборки библиотеки и приложения. Либа, как я понимаю, собирается нормально.
Лекарство от всех болезней: в свойствах проекта приложения проверяем, что C\C++ -> Code Generation -> Runtime Library устанолен в Multi-threader (Debug) - т.е. не DLL.
1
2 / 2 / 3
Регистрация: 17.06.2013
Сообщений: 122
24.08.2014, 17:13  [ТС] 18
Кликните здесь для просмотра всего текста


Добавлено через 4 минуты
Так, поставил многопоточность вроде собрался! Сейчас кое-чо модифицирую...

Добавлено через 4 минуты
Цитата Сообщение от 0x10 Посмотреть сообщение
Лекарство от всех болезней:
Чувак, ты даже не представляешь насколько ты крут!!! Я б тебя расцеловал!!! Этот еханый
Этот еханый скрипт!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <json/json.h>
#include <string>
#include <iostream>
 
using namespace std;
 
int main(){
    string config_doc = "{\"moon\":\"rex\"}";
    Json::Value root;   // will contains the root value after parsing.
    Json::Reader reader;
    bool parsingSuccessful = reader.parse(config_doc,root);
    if ( !parsingSuccessful )
    {
        // report to the user the failure and their locations in the document.
        std::cout  << "Failed to parse configuration\n"
                   << reader.getFormattedErrorMessages();
        return 0;
    }
    std::string moon = root.get("moon", "no-moon" ).asString();
    cout << "moon: "<< moon <<endl;
    system("pause");
    return 0;
}
ОН ПАРСИТСЯ!!!!
0
2 / 2 / 3
Регистрация: 17.06.2013
Сообщений: 122
26.08.2014, 18:02  [ТС] 19
Цитата Сообщение от 0x10 Посмотреть сообщение
Есть конкретные вопросы - задавайте, при условии что ответов на них нет в официальной документации.
Привет дружище! Ты говорил можно задавать конкретные вопросы, у меня конкретный вопрос:
Есть json
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
    "map_w_size":"15",
    "map_h_size":"5",
    "tile":"c:/tile.png",
    "map" : [
            {
                "x":"50",
                "y":"100"
            },
            {
                "x":"1",
                "y":"5"
            }
    ]
}
Как считать то что в []. там только значения в примере читались

Добавлено через 10 минут
Пытаюсь считать хотя б на дисплей, приложение запускается но сразу выводит ошибку.
C++
1
2
3
4
5
    const Json::Value map = root["map"];//считываем объекты
 
        for(int i=0; i < map.size(); ++i){
            cout << map[i].asString() << endl;
        }
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
26.08.2014, 18:02 20
Цитата Сообщение от Валеркуй Посмотреть сообщение
Как считать то что в []
http://jsoncpp.sourceforge.net... value.html
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
#include <string>
 
#include <jsoncpp/json/json.h>
 
int main() {
    const std::string json_str = R"(
        {
            "map_w_size": 15,
            "map_h_size": 5,
            "tile": "c:/tile.png",
            "map": [
                {
                    "x": 50,
                    "y": 100
                },
                {
                    "x": 1,
                    "y": 5
                }
            ]
        }
    )";
 
    Json::Reader reader;
    Json::Value root;
 
    reader.parse(json_str, root);
 
    for (const auto& point : root["map"]) {
        std::cout << point["x"].asInt() << ", " << point["y"].asInt() << std::endl;
    }
}
1
26.08.2014, 18:02
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.08.2014, 18:02
Помогаю со студенческими работами здесь

Как сделать переменную с использованием в названии значения другой переменной?
Как осуществить так сказать использование значения переменной в названии другой переменной for...

Найти вероятность того, что в первом ящике лежит 4 шара
6 шаров случайным образом раскладываются по 3 ящикам. Найти вероятность того, что в первом ящике...

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

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

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

Определить истинность того, что точка с заданными координатами лежит во четвертой координатной четверти
даны числа x,y. Проверить истиннность высказывания:&quot;точка с координатами (x,y) лежит во четвертой...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru