Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
1978 / 834 / 115
Регистрация: 01.10.2012
Сообщений: 5,170
Записей в блоге: 2

Написать современно

06.11.2025, 13:50. Показов 14480. Ответов 154
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

Есть такой фрагмент

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const char * singleC = strstr(src, "//");
const char * multiC = strstr(src, "/*");
const char * eol = strstr(src, "\n");
 
const char * min = nullptr;
if (singleC) min = singleC;
if (multiC && (!min || (multiC < min))) min = multiC;
if (eol && (!min || (eol < min))) min = eol;
 
if (!min) return;
 
if (min == singleC) {
 ...
}
 
if (min == multiC) {
 ...
}
 
if (min == eol) {
 ...
}
Бросается в глаза что код примитивный (тупой, убогий, говнокод и.т.п. - как хотите). Кроме того, его можно существенно ускорить.

Хорошо, как написать грамотно, современно? И заодно универсально, чтобы работал не только с char*

Спасибо
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.11.2025, 13:50
Ответы с готовыми решениями:

Каковы современные решения написания программ?
Уже пол года как изучаю с++. За это время решил не мало задачек и перечитал литературы. Писал все...

Как создают современные компьютерные игры?
Интересно, как создают современные компьютерные игры?? То есть на каком языке программирования?? Я...

Современный интерфейс в C++ Builder
Что используют программисты для создания современного интерфейса в C++ Builder XE4? Ведь сейчас,...

154
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
18.11.2025, 00:25
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Наталья8 Посмотреть сообщение
В осмысленном тексте есть такие штуки как "\r\n".
ничего не будет, если запихать в std::vector<unsigned char>
Цитата Сообщение от Наталья8 Посмотреть сообщение
В массив unsigned char, можно любой контент напихать
вот именно. А что качается параметра функции, то моя функция в качества входных данных принимала string, поскольку я работал с текстом. А так, конечно, любые данные можно засунуть в std::vector<unsigned char>. Можно, например, прочесть все содержимое файла в виде байтов и засунуть в вектор.
Цитата Сообщение от Наталья8 Посмотреть сообщение
И по моему не обязательно он должен быть unsigned...
когда char используется для хранения байтов, то настоятельно рекомендуется использовать unsigned char, а не просто char. Но это не обязательно в функции выше. А вообще, есть более удобные и более правильные типы для хранения байтов, чем unsigned char. Просто библиотека, которую я нашел в сети, работала с std::vector<unsigned char>, вот я и не парился, тоже использовал именно это.
0
 Аватар для Наталья8
625 / 383 / 67
Регистрация: 09.03.2016
Сообщений: 4,305
18.11.2025, 02:02

Теперь красиво.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
unsigned char *buf_for_txt = (unsigned char*)calloc(size_n + 40, sizeof(char));
    fread(buf_for_txt, size_n, 1, file_ptr);
 
// --- Дешифрование ---
        int decrypted_len;
        std::vector<unsigned char> decrypted_text = decrypt(
            buf_for_txt,
            size_n,
            key,
            iv,
            &decrypted_len
        );
 
unsigned char *ptr_for = reinterpret_cast<unsigned char*>(&decrypted_text[0]);
        
        fwrite(ptr_for, sizeof(char), decrypted_len,// <-- Гнать  весь файл
            file_for_save);
            free(buf_for_txt);
                    }
            fclose(file_ptr);
Массив на куче. К вектору привинчиваеться указатель.
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
18.11.2025, 10:24
Цитата Сообщение от Royal_X Посмотреть сообщение
std::vector<unsigned char> stringToBytes(const std::string &str) {
    return std::vector<unsigned char>(str.begin(), str.end());
}
ваша либа спроектирована неправильно.
правильно это вместо
std::vector<unsigned char> она должна была принимать на вход std::span<const unsigned char>
тогда не нужно было бы делать ваше тяжелое копирование.

в данном вашем примере происходит вопиющая дискредитация крестов
в пользу сишки у которой указатель и размер в аргументах выглядят идеально(аж через чур) универсально.

можно про такую ситуацию выразиться так:
архитекторы дизайна предложенной вами либы грубо облажались с интерфейсом.
что делать? архитекторов за дискредитацию крестов расстрелять крупнокалиберными зенитками, а либу переделать.
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
18.11.2025, 10:41
XLAT, span это же С++20. Никто не станет делать либу на С++20

Возможно, вместо unsigned char нужно брать std::byte (C++17). Хотя, у unsigned char лучшая совместимость.

Или можно uint8_t.
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
18.11.2025, 11:11
Цитата Сообщение от Royal_X Посмотреть сообщение
Никто не станет делать либу
ок.
итого главный вывод из данного случая: Внешние интерфейсы нужно делать сишностайловыми!
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
18.11.2025, 12:38
Цитата Сообщение от XLAT Посмотреть сообщение
итого главный вывод из данного случая: Внешние интерфейсы нужно делать сишностайловыми
я вот для bin2cpp использовал uint8_t, но до сих пор сомневаюсь, типа думаю, что возможно стоило использовать unsigned char. У других я даже видел просто char, но это полный бред и на char даже ругаются компиляторы, когда пытаешься использовать в связке с некоторыми фреймворками. Что ты думаешь?
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
18.11.2025, 12:51
Цитата Сообщение от Royal_X Посмотреть сообщение
bin2cpp
видел ещё 3 месяца назад.
хотел написать тя свою оценку,
но получился у мя хейт.

поэтому не стал ничего там у тя постить)
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
18.11.2025, 13:14
Цитата Сообщение от XLAT Посмотреть сообщение
но получился у мя хейт
у тебя всегда хейт, причем ты называешь "говно", не видя даже сам код. Я бы еще понимал, если ты критиковал бы саму идею программы.

Но я тебе задал конкретный вопрос касательно типа массива.
0
 Аватар для Наталья8
625 / 383 / 67
Регистрация: 09.03.2016
Сообщений: 4,305
18.11.2025, 13:43
Цитата Сообщение от Royal_X Посмотреть сообщение
конкретный вопрос касательно типа массива
Без разницы... Просто не надо пользовать функции типа strlen(), strcat() и.т.д.
Это просто массив байтов. (Не символов.)

Добавлено через 2 минуты
Цитата Сообщение от Наталья8 Посмотреть сообщение
std::vector<unsigned char> decrypted_text =
Цитата Сообщение от Наталья8 Посмотреть сообщение
unsigned char *ptr_for = reinterpret_cast<unsigned char*>(&decrypted_text[0]);
вчера прочёл, что такой вектор тоже массив байтов. И к нему можно привинтить указатель.

Добавлено через 14 минут
Цитата Сообщение от Royal_X Посмотреть сообщение
я вот для bin2cpp использовал
Красиво расписал. Так не работает ни хрена...
Ещё с твоим непонятным преобразованием.

Не по теме:

Мне популярности не надо. Не по возрасту как бы.
Смысла нету. Дожить бы спокойно...

0
 Аватар для Наталья8
625 / 383 / 67
Регистрация: 09.03.2016
Сообщений: 4,305
18.11.2025, 13:51

Вот искуственный интелект тоже не догоняет...
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
18.11.2025, 13:59
Цитата Сообщение от Royal_X Посмотреть сообщение
Но я тебе задал конкретный вопрос касательно типа массива.
вот же, разве мы не вместе сделали этот вывод:
Цитата Сообщение от XLAT Посмотреть сообщение
Внешние интерфейсы нужно делать сишностайловыми!
?!
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
18.11.2025, 14:07
Цитата Сообщение от XLAT Посмотреть сообщение
?!
Или вообще написать на С? Вот, почему ядра ОС пишут на С, а не на С++? Пока сишники пишут ядра ОС, ты пишешь калькуляторы на С++ ...

0
1978 / 834 / 115
Регистрация: 01.10.2012
Сообщений: 5,170
Записей в блоге: 2
30.11.2025, 15:07  [ТС]
Здесь тоже, флудить устали, а по существу сказать нечего. Хорошо, пусть "современность" - дело темное/растяжимое (хотя интересное). Но с "универсальностью" подходы открыты/очевидны. Так нет же, уперлись в std::string_view (тот же char*) - и все тут! В общем, "тема не раскрыта"
0
Just Do It!
 Аватар для XLAT
4220 / 2684 / 656
Регистрация: 23.09.2014
Сообщений: 9,236
Записей в блоге: 3
30.11.2025, 16:04
Цитата Сообщение от Igor3D Посмотреть сообщение
флудить устали
если вы не видите флуда, то это значит, что его удалили бородатые толстые лысые дяди.

я на современность ложил болт, ибо,

Code
1
2
3
4
5
6
7
"... если у вас в железке есть биты,
то биты там и останутся - нет никакого смысла рассуждать о современных кубитах,
которых нет в вашей железке ... 
...
Эти биты будут и через 1000 лет такими же современными, 
если вы за это время так и не смените вашу железку..."
(Э.Айнштайн)
Igor3D,
как я уже отмечал, поскольку конкретная задача в вашем сообщении не обозначена,
его заголовок может спровоцировать бесцельное обсуждение (флуд).
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
30.11.2025, 21:34
Цитата Сообщение от XLAT Посмотреть сообщение
рассуждать о современных кубитах
Не думаю, что их можно назвать современными. Квантовые компьютеры уже существуют достаточно давно. Но ирония в том, что они не могут заменить обычные компьютеры, поскольку эти компьютеры имеют преимущество только в некоторых задачах, где можно эффективно использовать суперпозицию, запутанность и интерференцию. И эти задачи в наше время не так уж важны обычным пользователям, поэтому никто не спешит запустить массовое производство квантовых компьютеров. Аналогично, не вижу, чтобы кто-то активно изучал квантовые языки программирования...
На мой взгляд, в будущем возможно в ПК добавят какие-то квантовые модули, которые будут паралельно работать с классической архитектурой. Но сомневаюсь, что кто-то будет пользоваться чисто квантовым компьютером.
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
30.11.2025, 22:05
Цитата Сообщение от Royal_X Посмотреть сообщение
Не думаю, что их можно назвать современными.
Их сейчас используют все и везде - они современные.

Цитата Сообщение от Royal_X Посмотреть сообщение
запутанность и интерференцию
Как юзверь может использовать запутанность и интерференцию в них?
Или иначе: как пользователю использовать запутанность и откуда там интерференция?

Цитата Сообщение от Royal_X Посмотреть сообщение
ирония в том, что они не могут заменить обычные компьютеры, поскольку эти компьютеры имеют преимущество только в некоторых задачах
Ирония сейчас только в креохолодильниках размером с дом и ценой в дофига. Раньше компы тож на лампах были, а теперь они в часиках.

Цитата Сообщение от Royal_X Посмотреть сообщение
поэтому никто не спешит запустить массовое производство квантовых компьютеров
Возврат к проблеме холодильников и ламповых компов. Имели б возможность запустить - запустили бы.

Добавлено через 18 минут
Цитата Сообщение от Royal_X Посмотреть сообщение
рассуждать о современных кубитах
А. Я Кривоглазый, прочитал "битах"
0
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6319 / 3044 / 1054
Регистрация: 01.06.2021
Сообщений: 11,624
30.11.2025, 22:06
Folian, тут можешь прочесть про интерференцию https://azure.microsoft.com/ru... is-a-qubit
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
30.11.2025, 22:06
Сорян, затупил
0
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
30.11.2025, 22:39
Цитата Сообщение от Royal_X Посмотреть сообщение
тут можешь прочесть про интерференцию https://azure.microsoft.com/ru... is-a-qubit
Рекламный буклет, короч.

Интерференция с запутанностью используются внутри, как я понял.
Миниатюры
Написать современно  
0
1978 / 834 / 115
Регистрация: 01.10.2012
Сообщений: 5,170
Записей в блоге: 2
01.12.2025, 01:19  [ТС]
Цитата Сообщение от XLAT Посмотреть сообщение
поскольку конкретная задача в вашем сообщении не обозначена,
его заголовок может спровоцировать бесцельное обсуждение (флуд).
Это легко проверить перечитав стартовый пост По-моему достаточно конкретно.
Цитата Сообщение от XLAT Посмотреть сообщение
я на современность ложил болт, ибо
Вы делаете примерно то же что и все (считая меня): запомнить новое и попытаться его применить. Думаю что это вполне разумно. Но иногда возникают сомнения типа "куда идем?" (в Москву или в Монголию?). Напр
C++
1
static std::string replace(std::string_view text)
Легко найти аргументы в пользу std::string_view, типа
А если хотим реплейсить только часть строки? Или вообще std::vector<char>?
Но при этом возникает др мысль, ее редко озвучивают
Да, может "в году раз" так и будет, тогда std::string_view окажется полезным. Но если "это все" то фича-то копеечная
И минимум 90% "нового" примерно такое же, да, поудобнее, поприятнее, но.. не более того
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.12.2025, 01:19

Нормальная, современная книга по C++ с ООП уклоном
Так вышло что изучаю параллельно два языка Java и C++ ну вот жизть так сложилась нужно писать и там...

А.Александреску - Современное проектирование на C++
Собственно вопрос не совсем по программированию :) Хочу купить бумажный вариант, но смущает, что...

Современный интерфейс в C++ Builder / C++ Builder
Что используют программисты для создания современного интерфейса в C++ Builder 6? Ведь сейчас,...

Каков современный подход для работы со строками
Здравствуйте, хотел узнать современный подход для работы со строками. В С++ так же используется...

Концепция ООП и их использование в современных языках программирования
Дали курсовую на эту тему. Подскажите, какую литературу, которую можно бы было использовать пр ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
140
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru