Size: a a a

2020 April 06

Е

Егор in Qt
Vladimir Suisei
Почему я не могу запушить в QByteArray .append(0), хотя могу .append(1) ?
а если явно append(char(0))?
источник

VS

Vladimir Suisei in Qt
Егор
а если явно append(char(0))?
Вопрос был не как починить, а почему.
Да, можно char(0), можно append('\0').
источник

Е

Егор in Qt
Vladimir Suisei
Вопрос был не как починить, а почему.
Да, можно char(0), можно append('\0').
скорее всего компиль не может выбрать между чаром и кастом 0 в нуллптр
источник

VS

Vladimir Suisei in Qt
Егор
скорее всего компиль не может выбрать между чаром и кастом 0 в нуллптр
Ну, наверное да.
Кстати, а если передать nullptr, программа крашнется?
источник

Е

Егор in Qt
Vladimir Suisei
Ну, наверное да.
Кстати, а если передать nullptr, программа крашнется?
я в соурсы кутей не лез, надо доку чекать. Думаю там проверка должна быть
источник

VS

Vladimir Suisei in Qt
Егор
я в соурсы кутей не лез, надо доку чекать. Думаю там проверка должна быть
Проверка с qFatal ничем от краша не отличается...
источник

VS

Vladimir Suisei in Qt
В доке про это нет ничего
источник

SE

Stanislav Ershov in Qt
Егор
скорее всего компиль не может выбрать между чаром и кастом 0 в нуллптр
дак надо почитать что он пишет, но скорее всего так и есть
источник

SE

Stanislav Ershov in Qt
QByteArray &  append(char ch)
QByteArray &  append(const char *str)

какой выбрать? )
источник

VS

Vladimir Suisei in Qt
Stanislav Ershov
QByteArray &  append(char ch)
QByteArray &  append(const char *str)

какой выбрать? )
Очевидно первый
источник

SE

Stanislav Ershov in Qt
Vladimir Suisei
Очевидно первый
кому очевидно?
источник

Е

Егор in Qt
Vladimir Suisei
В доке про это нет ничего
QByteArray& QByteArray::append(const char *str)
{
   if (str) {
       int len = qstrlen(str);
       if (d->ref != 1 || d->size + len > d->alloc)
           realloc(qAllocMore(d->size + len, sizeof(Data)));
       memcpy(d->data + d->size, str, len + 1); // include null terminator
       d->size += len;
   }
   return *this;
}

Ничё не будет
источник

Е

Егор in Qt
хоть бы варн вставили чтоле
источник

VS

Vladimir Suisei in Qt
Stanislav Ershov
кому очевидно?
В теории, если передается 0 - мы заранее знаем, что вариант с const char * неверный - т.к. оно ни к чему не приведет, и в этом случае можно считать, что человек всегда хочет вставить нулевой байт
источник

VS

Vladimir Suisei in Qt
Не знаю правда как это в коде реализовать.
источник

VS

Vladimir Suisei in Qt
Наверняка должна быть какая-то шаблонная магия для этого
источник

SE

Stanislav Ershov in Qt
да в плане, компилер должен ругнуться
источник

SE

Stanislav Ershov in Qt
error: call to 'append' is ambiguous
источник

SE

Stanislav Ershov in Qt
что то типа того
источник

VS

Vladimir Suisei in Qt
Он-то ругается, но я думаю, нельзя ли было сделать так, чтобы не ругался.
источник