Берите дальше - днк это строка.
iw4nna.rock
> имя файла - это строка
> набор случайных символов - это строка
> время и дата - это строка
Абитуриент должен сдавать биологию, времени на подготовку мало. Но он знает, что главный в комиссии - специалист по кольчатым червям. Студент все про кольчатых червей и выучивает. Приходит на экзамен, тянет билет. Ему выпадает билет "Слон". Выходит рассказывать:"Слон - это большое серое животное на четырех колонообразных ногах, с хоботом и маленькими злыми глазками. Вот он смотрит вниз и видит там кольчатых червей. Которые подразделяются..."
iw4nna.rock
> имя файла - это строка
> набор случайных символов - это строка
> время и дата - это строка
Нет.
Да, но хозяин метода "сгенерировать рандом" — это должен быть генератор, а не строка.
Нет.
Кроме того, генератору ещё надо знать, какие именно символы должны допускаться к генерации. Древнеегипетские иероглифы допускаются? Цветные эмодзи с колобками разных рас допускаются? Комбинируемые диакритики допускаются? Непечатаемые контрольные символы допускаются? Запрещённые в юникоде кодпоинты допускаются?
Ох уж форум, ох уж геймдев и тут в срач всё быстро превращается.
Давайте вернёмся всё же к сабжу.
Вот вы знаете хоть одно оправдание, цель или смысл почему std::string не перегрузили конкатенацию с числами?
Это, блджад, элементарнейшее действие в плюсах до ++17 надо было извращаться с itoa, в ++17 появилось std::to_string.
Но ведь это то почему люди полюбили скриптовые языки и сейчас весь веб и AI вращаются на PHP и Python.
Просто из-за этого.
Если бы был Arduino String в плюсах стандарта бородатого года то не было бы всей этой плеяды как тупо ненужной. Несущественной и низкопроизводительной.
Просто достаточно было перегрузить операторы - язык позволял это сделать 30 лет назад!
ЭТОПИПЕЦ. Ниспадание шор.
Такая простая вещь...
=A=L=X=
> Вот вы знаете хоть одно оправдание, цель или смысл почему std::string не перегрузили конкатенацию с числами?
Потому что, прежде всего, это не нужно. То, что нужно в 99% случаев — это форматирование, а оно делается через printf-подобный интерфейс — ты задаёшь строку-формат и подставляешь фактические аргументы. В формате ты указываешь, куда вставлять число, а ещё, как именно его отобразить — сколько знаков после запятой, применять ли экспоненциальный формат, выравнивать ли по левому краю или по правому, заполнять пробелом или нулями, писать ли "+" к положительным, в конце концов, какими символами обозначать разряды и десятичную точку.
Нет практически никаких ситуаций, когда конкатенация плюсом оказывается лучше, чем форматирование подстановкой. А нишевые ситуации, которые случаются только раз в 10 лет в специальных лабораторных условиях, в библиотеках общего назначения рассматриваться не должны. У кого возникают особенные задачи — пусть пишет свои особенные библиотеки и нормальным людям балласт не накладывает.
=A=L=X=
> в ++17 появилось std::to_string
И замечательно. Так и надо было сделать. И теперь ++ стал ещё ближе к нормальному человеческому языку (Париж тоже не за один день строился). Если прямо не терпится наговнокодить — переводи число в строку явно, и затем конкатенируй по-нормальному строку со строкой. А автоматический перевод из числа в строку в операторе плюс — это говно, которого уже в джаваскрипте нормально нажрались, всем хватило, не надо больше это никуда тащить.
=A=L=X=
> Но ведь это то почему люди полюбили скриптовые языки и сейчас весь веб и AI вращаются на PHP и Python.
В питоне, между прочим, смешанный плюс тоже запрещён — приводи всё к одному типу явно и работай в нём. Надо конкатенацию — вызывай str руками. Вызовешь float — будет сложение по числам. Всё должно быть расписано явно. Питон намёков не воспринимает.
Имбирная Ведьмочка
> Потому что, прежде всего, это не нужно. То, что нужно в 99% случаев — это форматирование
Нет ты не прав. Как раз всё ровно наоборот - в 99% случаев это просто желание вывести число в консоль или поле ввода.
А форматирование с озабоченностью локалями и переводами на другой язык - это 1% случаев. Может даже 0,1%. Скорее даже 0,01%.
Ты серьёзно путаешь.
=A=L=X=
> Нет ты не прав. Как раз всё ровно наоборот - в 99% случаев это просто желание вывести число в консоль или поле ввода.
Вывод числа в консоль:
fprintf(stderr, "Chislo: %i\n", chislo);
Вывод числа в поле ввода:
chisloInput.value = chislo;
Не вижу нужды в смешанном плюсе.
Имбирная Ведьмочка
Искусственные дохлые примеры.
Попробуй уже правду-матку рубить.
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); String deviceName = device.getName(); addLog("Обнаружено устройство '" + deviceName + "' -> " + device.getAddress()); if (deviceName != null) {
Вот это как в жизни это выглядит и нехер оправыдывать всё printf. Принтф это запрещенная уже лет 30 как практика. Ненадёжная и неправильная.
Никакой язык программирования printf не заимствовал потому что ДИЧЬ.
=A=L=X=
> addLog("Обнаружено устройство '" + deviceName + "' -> " + device.getAddress());
addLog("Обнаружено устройство '$s' -> %s", deviceName, device.getAddress( ));
Если addLog так не умеет — смело поливай этот addLog говном. Вот это — действительно то, за неимение чего надо поливать говном. А не смешанный плюс.
=A=L=X=
> Никакой язык программирования printf не заимствовал потому что ДИЧЬ.
Никакой, кроме новомодного цпп, раст, питона, джавы, жс и куча-куча других. Все языки, на которых люди пишут программы — имеют ту или иную вариацию на принтф-подобные подстановщики. Ну а кроме тех, на которые не насрать — да, не спорю, брейнфак может и не заимствовать, и хрен с ним.
Имбирная Ведьмочка
> Все языки, на которых люди пишут программы — имеют ту или иную вариацию на принтф-подобные подстановщики. Ну а кроме тех, на которые не насрать — да, не спорю, брейнфак может и не заимствовать, и хрен с ним.
шарп:
addLog($"Обнаружено устройство '{deviceName}' ->{device.getAddress()}");
Имбирная Ведьмочка
> addLog("Обнаружено устройство '$s' -> %s", deviceName, device.getAddress());
Я не понимаю как здравомыслящий здоровый человек в сознании не может понимать что это говнище говистое.
Говны говна.
Мимо смысла и намерения.
Какое было намерение в коде? Почему его как беременную корову на льду разнесло - одни копыта вправо другие влево, всё порознь?
КАК ТЫ СМОГ ЭТО НАЗЫВАТЬ ПРОГРАММИРОВАНИЕМ БЕЗ ИЗЪЯНА?
Что за червь у тебя в башке?
lilith("smokin", "thers, "@indie", puk) - специально для господ которы не понимают что такое консистентность
=A=L=X=
> Какое было намерение в коде?
Намерение в том, чтобы сделать ровно одну аллокацию для новой строки, т.к. размероность всех входящих данных заранее известно.
Либо вообще не делать никаких аллокаций, и выводить "куски" строки, как они есть.
В случаях с оператором (и тем более перегруженным оператором), совсем не факт, что компилятор сумеет в оптимизацию.
Пример с lilith() выше, как мы имеет место быть в виде функций concat или printf