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

No match for 'operator'(operand types are rapidjson:: )

08.04.2018, 17:23. Показов 1585. Ответов 11
Метки нет (Все метки)

эта ошибка возникает в цикле for. указывает на итератор iter=document.Begin().
Суть такая : мне нужно парсить json файл. дела. по следующему образцу https://romannikov-nstu.blogsp... son-c.html

только там не прописан iter=document.Begin().
и если я тоже не пишу его, то компилятор открывает файл document.h и стрелкой указывает на MemberIterator MemberBegin()

и работаю с библиотекой rapidjson. И это требование такое использовать именно эту библиотеку. Помогите пожалуйста разобраться
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2018, 17:23
Ответы с готовыми решениями:

Error: no match for 'operator-' (operand types are 'Space' and 'int')
Не знаю с чем связано, но не с SFML, решил попробовать создать симуляцию космоса и так-как если...

No match for 'operator<' (operand types are 'std::__cxx11::string {aka std::__c
Имеем следующий код: #include &lt;iostream&gt; #include &lt;string&gt; #include &lt;vector&gt; #include...

Ошибка в коде "no match for 'operator[]' (operand types are 'Student' and 'int')"
Помогите пожалуйста разобраться, в чём проблема? Весь код: #include &quot;windows.h&quot; #include...

Ошибка на "cout <<" no match for operator operand types are std::basic_ostream char
Немного слов про код.Данный код создан для выдачи номера машины,цвета,марки при предоставлении...

11
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
08.04.2018, 17:41 2
Что за Begin, если там MemberBegin?
1
0 / 0 / 0
Регистрация: 03.12.2017
Сообщений: 122
08.04.2018, 18:12  [ТС] 3
ой, да. я это исправила. и всё равно. ошибка уже " The inferior stopped because it received a signal from the operating system. Signal name : SIGABRT Signal meaning: Aborted

Добавлено через 21 минуту
эта ошибка возникает как только вхожу в цикл for
0
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
08.04.2018, 18:35 4
Программу показывай.
1
0 / 0 / 0
Регистрация: 03.12.2017
Сообщений: 122
08.04.2018, 22:22  [ТС] 5
нельзя программу показывать. поэтому и выложила ссылку на материалы.

вобщем, баг вылезает на итераторе
0
nd2
3422 / 2802 / 1252
Регистрация: 29.01.2016
Сообщений: 9,426
09.04.2018, 06:04 6
Цитата Сообщение от NellkaKaramelka Посмотреть сообщение
вобщем, баг вылезает на итераторе
И что? Код как в примере по ссылке? json файл какой?
1
7158 / 6133 / 2801
Регистрация: 14.04.2014
Сообщений: 26,455
09.04.2018, 08:20 7
Цитата Сообщение от NellkaKaramelka Посмотреть сообщение
нельзя программу показывать
Это почему? Т. е. вопрос к телепатам?
1
0 / 0 / 0
Регистрация: 03.12.2017
Сообщений: 122
09.04.2018, 09:55  [ТС] 8
потому что все действия в системе контролируются и за это увольняют

Добавлено через 5 минут
файл выглядит примерно так
JSON
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
[
{
"koordinat":[
{
"x":5,
"y":6
},
{
"x":5,
"y":7
},
{
"x":5,
"y":8
},
 
],
"t":0,
"z":0
 
}
],
},
 
{
 
"koordinat":[
{
"x":6,
"y":6
},
{
"x":6,
"y":7
},
{
"x":6,
"y":8
},
 
],
"t":0,
"z":0
 
}
]
Добавлено через 40 минут
я использую из источника следующее

C++ (Qt)
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
 std::ifstream ifs("test-json-file.json");
 
  IStreamWrapper isw(ifs);
 
  Document documentFromFile;
 
  documentFromFile.ParseStream(isw);
 
 
std::string GetElementValue(const Value& val) 
 
{
 
  if (val.GetType() == Type::kNumberType)
 
    return std::to_string(val.GetInt());
 
  else if (val.GetType() == Type::kStringType)
 
    return val.GetString();
 
  else if (val.GetType() == Type::kArrayType)
 
    return "Array";
 
  else if (val.GetType() == Type::kObjectType)
 
    return "Object";
 
  return "Unknown";
 
}
 
 
 
 
  // Example 3: Iterating over elements
 
  Value::ConstMemberIterator iter = documentFromFile.MemberBegin();
 
  for (;iter != documentFromFile.MemberEnd(); ++iter) {
 
    std::cout << GetElementValue(iter->value) 
 
              << std::endl;
 
  }
0
487 / 365 / 94
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
09.04.2018, 12:23 9
auto
C++ (Qt)
1
auto iter = documentFromFile.MemberBegin();
1
0 / 0 / 0
Регистрация: 03.12.2017
Сообщений: 122
09.04.2018, 13:20  [ТС] 10
та же ошибка выходит
0
487 / 365 / 94
Регистрация: 10.03.2011
Сообщений: 1,513
Записей в блоге: 5
09.04.2018, 13:27 11
та же какая?
1
Эксперт С++
3058 / 1400 / 421
Регистрация: 19.01.2009
Сообщений: 3,769
09.04.2018, 13:33 12
Лучший ответ Сообщение было отмечено NellkaKaramelka как решение

Решение

Цитата Сообщение от NellkaKaramelka Посмотреть сообщение
файл выглядит примерно так
Поглядите с помощью этого иструмента все ли у вас впорядке с исходным json.

MemberBegin() - если у вас root это объект ({}), а у вас root это массив([]). Для итерации по массиву нужно использовать Begin() и End(), вместо MemberBegin() и MemberEnd().

Для примера, если возьмем такой JSON:
JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
[{
    "koordinat": [{
            "x": 5,
            "y": 6
        },
        {
            "x": 5,
            "y": 7
        },
        {
            "x": 5,
            "y": 8
        }
 
    ],
    "t": 0,
    "z": 0
 
}]
То его парсинг будет выглядеть как-то так:
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
    std::ifstream ifs;
    std::string filePath("test-json-file.json");
    ifs.open(filePath, std::ios_base::in | std::ios_base::binary);
    if (!ifs.is_open()) {
        std::cout << "ERR: can't open '" << filePath << "'." << std::endl;;
        exit(EXIT_FAILURE);
    }
    IStreamWrapper isw(ifs);
    Document documentFromFile;
    documentFromFile.ParseStream(isw);
    if (documentFromFile.HasParseError()) {
        std::cout << "ERR:"
                  << " parse_error = " << documentFromFile.GetParseError()
                  << " parse_offset = " << documentFromFile.GetErrorOffset()
                  << std::endl;
        exit(EXIT_FAILURE);
    }
    auto iter = documentFromFile.Begin();
    for (;iter != documentFromFile.End(); ++iter) {
        const Value & v = (*iter);
        assert(v.IsObject());
        const Document::ConstArray & a = v["koordinat"].GetArray();
        for (auto i = a.Begin(); i != a.End(); ++i) {
            const Value & koord = (*i);
            assert(koord.IsObject());
            std::cout << "\tx=" << koord["x"].GetInt()
                      << "y=" << koord["y"].GetInt()
                      << std::endl;
        }
        std::cout << "t=" << v["t"].GetInt() << std::endl;
        std::cout << "z=" << v["z"].GetInt() << std::endl;
    }
Вывод:
Bash
1
2
3
4
5
    x=5y=6
    x=5y=7
    x=5y=8
t=0
z=0
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.04.2018, 13:33

Ошибка Operand types do not match
Добрый вечер, помогите исрпавить ошибку в 23 строчке, суть программы заключается в том что я должен...

Ошибка в TASM, Operand types do not match
Появилась вот такая вот ошибка - Operand types do not match. Не знаю как исправить. Само задание ...

Исправить ошибку в коде (Operand types do not match)
data SEGMENT byte ;Сегмент даних a1 db 1 ;Елементи даних a2 db 2...

Ошибка при компиляции: Operand types do not match
MODEL SMALL STACK 100h DATASEG Question DB 10,13,'Close program? - $' Set_X DB ...


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

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

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