Micktu 😬
щас изложу
Micktu 😬
Micktu 😬
Micktu 😬
длина
Micktu 😬
Micktu 😬
и панчлайн
Micktu 😬
Micktu 😬
результат ресайза!
Micktu 😬
строки не устают удивлять, наверное все-таки воспользуюсь промежуточным буфером и не буду выебываться.
Micktu 😬
причем вот это это редкий случай и я не понимаю условий
Micktu 😬
понимаю только что пожалуй все-таки не стоит лезть в строку без причины
🦥Alex Fails
кстати. ты писал пример кода с ресерв, реад и ресайз. это не очень, кмк
🦥Alex Fails
мб сразу ресайз сделать, чтоб точно быть уверенным, что пойнтер норм будет?
Micktu 😬
я так и сделал
Micktu 😬
вариант с резервом не работал (хоть и должен работать корректно, аллоцироваться в нужном месте)
Micktu 😬
в результате я их полноценно инициализирую, забиваю нулями
wstr_t id(0x44, 0);
wstr_t val(0x400, 0);
Micktu 😬
но как видишь все равно что-то странное проиходит
Micktu 😬
хотя постой
Micktu 😬
это не ошибка в ресайзе
Micktu 😬
сайз верный
Micktu 😬
это какие-то конченые символы в строке
Micktu 😬
я понял
Micktu 😬
очень и очень странно
Micktu 😬
выглядит как баг, если честно. и баг не у меня
Micktu 😬
смотри, что происходит после ресайза
Micktu 😬
размер ставится на желаемый
Micktu 😬
(56)
Micktu 😬
но строка то ли реаллоцируется то ли не знаю что с ней происходит
Micktu 😬
и в новом буфере действительно нет нужных символов, она обрезана
Micktu 😬
да на скрине все что можно знать об этом
Micktu 😬
короче похоже мне не стоит пытаться лезть в строку, где-то рассинхрон: буфер обрезается до предыдущей длины про ресайзе
Micktu 😬
а не до текущей указанной
🦥Alex Fails
Micktu 😬
ну само собой
Micktu 😬
короче я кажется понял фикс
Micktu 😬
интуитивно
Micktu 😬
ща проверю
Micktu 😬
я понял как она себя ведет
Micktu 😬
ес.
Micktu 😬
я добавил в конце итерации
id.resize(id.capacity());
val.resize(val.capacity());
это решает проблему
Micktu 😬
я не уверен, почему это происходит, но если новая строка больше предыдущей, оно во время ресайза зануливает на дельту
Micktu 😬
возможно, чтобы устранить мусор
Micktu 😬
так вот оно зануливает то, что я в память ей всадил
Micktu 😬
в следующий раз не буду делать такие вещи, буду пользоваться нормальным буфером
🦥Alex Fails
мне кажется, что ты сам ее ресайзишь обратно в меньшую херь. но я уже чот вообще не соображаю, поэтому решил заняться обезьянней деятельностью (правлю html в пулл-реквесте на сайт procxx.github.io)
Micktu 😬
Micktu 😬
если я ресайжу ее в 56 а она мне тримит строку до 12
Micktu 😬
то наверное нет
Micktu 😬
12 - ее предыдущая длина
Micktu 😬
так вот после resize(56) она приобретает size() == 56
Micktu 😬
НО обрезает строку до 11 + нуль-терминатор
🦥Alex Fails
ок. приведи, плз, весь сниппет, мб найдем решение поизящнее
Micktu 😬
решение поизящнее - нехер писать в c_str() строки :))
🦥Alex Fails
да, для этого сделали .data()
Micktu 😬
wait what...
Micktu 😬
сразу мог сказать :))
Micktu 😬
Both string::data and string::c_str are synonyms and return the same value.
Micktu 😬
ноуп, одно и то же.
🦥Alex Fails
почти
🦥Alex Fails
лан, я спать пойду, доброй ночи
Micktu 😬
доброй ночи
Micktu 😬
сделал буфер и больше не выпендриваюсь
Micktu 😬
wstr_t id;
wstr_t val;
for (uint32_t i = 0; i < numEntries; i++)
{
file->read((char*)WCS_BUFFER, 0x44 * sizeof(wchar_t));
id.assign(WCS_BUFFER);
file->read((char*)WCS_BUFFER, 0x400 * sizeof(wchar_t));
val.assign(WCS_BUFFER);
🦥Alex Fails
А как было?
Micktu 😬
мне отфорвардить в третий раз?
Micktu 😬
спи уже
rostislav
Чета все спят
λ
0x44 * sizeof(wchar_t)
Что за магия с 0x44?
Micktu 😬
ОЙ КОНСТАНТУ НЕ ОБЪЯВИЛЬ
rostislav
ну протокол какойто
Micktu 😬
ОЙ ПЛЯХОЙ МАЛЬСИК((9
rostislav
фигачит магическими числами
rostislav
мужик
Алдар
https://www.youtube.com/watch?v=LgbSYxf9vT4&index=1&list=PLUxuJBZBzEdxzVpoBQY9agA8JUgNkeYSV
Алдар
обзор 3д движка на С++, мож кому надо
Dogma
Anonymous
/stat@combot
Станислав
Всем привет.Посоветуйте учебник или канал по обучению Qt
Станислав
спасибо)
Станислав
да надо везде развиваться)