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

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

06.11.2025, 13:50. Показов 14454. Ответов 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,615
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,297
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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,615
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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,615
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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,615
18.11.2025, 13:14
Цитата Сообщение от XLAT Посмотреть сообщение
но получился у мя хейт
у тебя всегда хейт, причем ты называешь "говно", не видя даже сам код. Я бы еще понимал, если ты критиковал бы саму идею программы.

Но я тебе задал конкретный вопрос касательно типа массива.
0
 Аватар для Наталья8
625 / 383 / 67
Регистрация: 09.03.2016
Сообщений: 4,297
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,297
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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,615
18.11.2025, 14:07
Цитата Сообщение от XLAT Посмотреть сообщение
?!
Или вообще написать на С? Вот, почему ядра ОС пишут на С, а не на С++? Пока сишники пишут ядра ОС, ты пишешь калькуляторы на С++ ...

0
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,159
Записей в блоге: 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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,615
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
Нарушитель
Эксперт функциональных языков программированияЭксперт С++
6318 / 3043 / 1054
Регистрация: 01.06.2021
Сообщений: 11,615
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
1977 / 833 / 115
Регистрация: 01.10.2012
Сообщений: 5,159
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru