Форум программистов, компьютерный форум CyberForum.ru

Создание переменной из строки json - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20 http://www.cyberforum.ru/cpp-beginners/thread772358.html
Вводится последовательность из N вещественных чисел. Определить наименьшее число, среди чисел больших 20. Добавлено через 53 секунды помогите кто чем может с объяснениями если не трудно
C++ существует ли аналог pair, но для 3х элементов? существует ли аналог pair, но для 3х элементов? Или только так? pair<A, pair<B, C> > obj; http://www.cyberforum.ru/cpp-beginners/thread772353.html
C++ класс контакт непонятная ошибка
похоже где-то с указателями намудрил. не понимаю где( Код: # include <iostream> using namespace std; class contact { char *numb; char *name;
C++ Конструктор
Я вот хотел еще спросить. Вызывается ли второй раз конструктор если вызываешь статический метод ? Например : Код C++ SomeKlass::SomeMethod(); в этом случае вызывается ли второй раз конструктор(без параметров) класса SomeKlass ? Спасибо.
C++ Дана строка символов. Удалить из нее все слова нечетной длины http://www.cyberforum.ru/cpp-beginners/thread772340.html
Дана строка символов. Удалить из нее все слова нечетной длины. Слова отделяются друг от друга одним пробелом
C++ Найти наибольший общий делитель трех натуральных чисел Найти наибольший общий делитель трех натуральных чисел (единица будет считаться наибольшим общим делителем только в том случае, когда других общих делителей у заданных чисел нет) подробнее

Показать сообщение отдельно
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
28.01.2013, 21:00     Создание переменной из строки json
Цитата Сообщение от Karry Посмотреть сообщение
а можно как нибудь переделать вывод массивов????? например если разделить вывод строки "test string" и "array1" ... там незнаю, вывод первого узла, вывод второго....... или такого нет?
Если имеется ввиду взять значение массива по индексу, то нет, из коробки так нельзя (по крайней мере я не знаю как), придётся сначала искать узел-предок для элементов массива, потом уже брать н-й элемент. Вообще по простому можно как-то так сделать:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <iostream>
#include <sstream>
#include <string>
 
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
 
 
namespace bpt = boost::property_tree;
 
 
int main() {
   bpt::ptree config;
   
   config.put("test string", "test value");
   
   bpt::ptree & arrayNode = config.put("array1", "");
   for (std::size_t i = 1; i <= 5; ++i) {
      std::ostringstream oss;
      oss << (i * 10);
      std::string const& str = oss.str();
      arrayNode.push_back(bpt::ptree::value_type("", bpt::ptree(str)));
   }
   
   config.push_back(bpt::ptree::value_type("json test", config));
   
   config.put("fruits.green"  , "apple");
   config.put("fruits.red"    , "cherry");
   config.put("fruits.yellow" , "banana");
   config.put("fruits.black"  , "bilberry");
   
  
   std::string path;
   while (std::getline(std::cin, path)) {
      std::cout << "Query for '" << path << "':" << std::endl;
      
      boost::optional<bpt::ptree &> result = config.get_child_optional(path);
      if (result) {
         bpt::ptree const& node = result.get();         
         if (node.empty()) {
            std::cout << node.data() << std::endl;
         } else {
            bpt::write_json(std::cout, node);
         }
      } else {
         std::cout << "'" << path << "': no such var" << std::endl;
      }
   }
}
http://liveworkspace.org/code/1z070U

Добавлено через 21 минуту

Не по теме:

Прошлый раз забыл "publish" нажать, код был не доступен


Может ещё так сойдёт:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <sstream>
#include <string>
 
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
 
 
namespace bpt = boost::property_tree;
 
 
int main() {
   bpt::ptree config;
   
   config.put("test string", "test value");
   
   bpt::ptree & arrayNode = config.put("array1", "");
   for (std::size_t i = 1; i <= 5; ++i) {
      std::ostringstream oss;
      oss << (i * 10);
      std::string const& str = oss.str();
      arrayNode.push_back(bpt::ptree::value_type("", bpt::ptree(str)));
   }
   
   config.push_back(bpt::ptree::value_type("json test", config));
   
   config.put("fruits.green"  , "apple");
   config.put("fruits.red"    , "cherry");
   config.put("fruits.yellow" , "banana");
   config.put("fruits.black"  , "bilberry");
   
  
   std::string path;
   while (std::getline(std::cin, path)) {
      std::cout << "Query for '" << path << "':" << std::endl;
      
      boost::optional<bpt::ptree &> result = config.get_child_optional(path);
      if (result) {
         bpt::ptree const& node = result.get();         
         bpt::path lastTag = bpt::path(path).reduce();         
         bpt::ptree result;
         result.add_child(lastTag, node);         
         bpt::write_json(std::cout, result);
      } else {
         std::cout << "'" << path << "': no such var" << std::endl;
      }
   }
}
http://liveworkspace.org/code/4jaTF7
 
Текущее время: 06:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru