Я пытаюсь использовать std::string с RapidJson.
using namespace std;
using namespace rapidjson;
const char* json = "{\n"
" \"id\": null\n"
" \"code\": null\n"
"}";
Document d;
string a = "myString";
d["myValue"].SetString(a); //error: no matching member function for call to 'SetString' in the compiler
Я просто хочу иметь возможность редактировать свой json с помощью rapidjson, используя std::string, но это не работает. Кстати, новичок в С++, так что извините, если это глупый вопрос.
Обновлено: я попробовал решение Хорхе Переса, но все еще получаю эту ошибку:
/include/rapidjson/document.h:1139: rapidjson::GenericValue<Encoding, Allocator>& rapidjson::GenericValue<Encoding, Allocator>::operator[](const rapidjson::GenericValue<Encoding, SourceAllocator>&) [with SourceAllocator = rapidjson::MemoryPoolAllocator<>; Encoding = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>]: Assertion `false' failed.
Есть идеи?
Не работает в каком смысле? Не компилируется? Сбой во время выполнения? Что-то другое? Укажите минимальный воспроизводимый пример
Это дает мне ошибку перед компиляцией, я только что отредактировал вопрос, добавив еще немного кода.
Лично я бы вместо этого использовал библиотеку nlohmann json. Намного проще и удобнее в использовании.
Если у вас есть строка:
std::string s = "myString";
Вы можете установить его в RapidJson, используя данные и размер:
document["myValue"].SetString(s.data(), s.size(), document.GetAllocator());
Я сделал это, теперь он дает мне ScrabbleClient: ../Downloads/rapidjson-master/include/rapidjson/document.h:1139: rapidjson::GenericValue<Encoding, Allocator>& rapidjson::GenericValue<Encoding, Allocator >::operator[](const rapidjson::GenericValue<Encoding, SourceAllocator>&) [with SourceAllocator = rapidjson::MemoryPoolAllocator<>; Кодировка = rapidjson::UTF8<>; Allocator = rapidjson::MemoryPoolAllocator<>]: Утверждение «false» не удалось. Есть идеи?
Итак, @IvanSolis, вы читали, что рядом со строкой 1139 внутри ./Downloads/rapidjson-master/include/rapidjson/document.h? Потому что в строке 1105 есть действительно хороший комментарий.
У меня есть рабочий json, я могу использовать другие методы Set, которые есть в Document.