Использую Rapidjson. Возникла нужда изменять строку.
string temp;
temp = doc["inventory"]["cells"][i]["title"].GetString();
Вполне себе работает.
doc["inventory"]["cells"][i]["title"].SetString("empty");
Тоже работает;
doc["inventory"]["cells"][i]["title"].SetString(temp);
не работает. Отсутствуют экземпляры перегруженная функция.
temp.c_str()
Тоже не жуёт. указание длины тоже не помогает.
Не помогает также запихать ему из того же документа GetString()
какой-нибудь.
Также не помогло указание длины строки (есть такая перегрузка).
А очень надо.
string temp;
const char * str = &temp[0];
doc["inventory"]["cells"][i]["title"].SetString(str, doc.GetAllocator());
Вроде нашёл решение. Нужно вызвать аллокатор, чтобы документ перестроился в памяти.
Запихнуть голую строку ему всё же не удалось, только const char *str;
const char *s = &temp[0];
doc["inventory"]["cells"][i]["title"].SetString(s,temp.size());
Вот так прожевало. Фух.
Рано радовался. В самом документе это не сохраняется.
Как только *s
уходит из области видимости - так сразу изменения обнуляются.
Это логично, ведь я дал ему ссылку на переменную s, а она исчезла. То есть, он не копирует, а просто подставляет ссылку.
Вопрос остаётся. Каким образом можно изменить строку, чтобы это сохранилось в документе rapidjson
? С интами, по крайней мере, никаких проблем нет.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Хочу вас спросить, я недавно увидел на википедии, что Kaspersky написан на c++, скажите пожалуйста, как они создали интерфейс? WinApi, Qt, или что-то другое?
В классе ObjectInput есть метод available(), который, как написано в java docs, возвращает количество байт, доступных для чтения без блокировкиВ классе FileInputStream...
При свайпе вправо не отображается иконка, хотя при свайпе влево она естьЯ смог пофиксить это, деля итоговое число на 10, но иконка получается...
Есть проект, который использует много библиотекЯ хочу передавать его на другой ПК после каждого обновления