строковые литералы — это массивы чаров, это не строки
а ещё неправильно подставлять значения в строку запроса вместо bindValue, потому что есть опасность инъекции
С нулевым символом в конце, строка всегда больше на 1 символ, неявно. Массив чаров, это массив чаров, не строка.
следующий уровень просветления — понять, что в строках нет символов, а только байты, кодъюниты и кодпойнты
Зачем?
Мы же о массивах и строках в C++
Признак строки это нулевой символ
чтобы меньше багов создавать в программах
Что ты имеешь ввиду? string_view и string?
Это же классы, а мы литеральные строки в стиле С.
Ты сказал строки в С++ Строки в этом языке это обёртка над строкой в Си
плюсовые литералы не обёртка, а буквально сишные литералы плюсовые типы строк тоже не обёртка над сишными типами строк, потому что в Си вообще нет типов чисто для строк
Лекции Константина Владимирова стоит послушать по поводу обертки над си строкой
Даже близко не обертка
https://github.com/gcc-mirror/gcc/blob/b096a6ebe9d9f9fed4c105f6555f724eb32af95c/libstdc%2B%2B-v3/include/bits/basic_string.h#L202
обёртка над указателем, но не над ASCIIZ
А что тогда по твоему char* ?
Дык там тоже терминатор в наличии
Указатель на тип char, может указывать на первый символ в последовательности, так и на одиночный символ. Но вам вопрос - как понять где конец последовательности не передавая длину строки?
А если это указатель на массив чаров?
Отвечай на вопрос
Тебе std::string не даст записать в него данные насильно, это уб
Я ответил. Если это массив чаров то нуль терминатор не нужен.
Речь шла о строке в стиле С, такой массив чаров считается строкой если есть нулевой символ , иначе это массив. Я в самом начале писал об этом, вас куда-то унесло
хорошо, видимо, стоит договориться об определениях обертки. обычно под wrapper подразумевают что-то, что дает "compatibility or interoperability". в этом случае string является wrapper или сову на глобус натягиваем?
Ты разделяешь строки от массива но не разделяешь массив от указателя Можешь уточнить что ты имеешь ввиду под строкой в Си?
А где я писал что разделяю?
Имя массива есть указатель на его первый элемент
Обсуждают сегодня