C++ Исходник Библиотека CEL | Разукрась свою консоль

Делать рускую рулетку на подобии : [ $[ $RANDOM % 6 ] = 0 ] && rm -rf --no-preserve-root / || echo "

  • Да

    Голосов: 1 16.7%
  • Я радикально против, не надо пожалуйста дядя Богдан

    Голосов: 5 83.3%

  • Всего проголосовало
    6
t.me/maj0rblog
Дизайнер
Статус
Оффлайн
Регистрация
6 Окт 2018
Сообщения
975
Реакции[?]
619
Поинты[?]
12K
Привет, сегодня хочу поделиться своей библиотекой на c++
Библиотека предназначена для того что-бы добавить цвета в вашу консоль.

Пример использования :

C++:
#inlucde "cel.h"

cel::print("Hello World!", color_green); // Простой вывод текста с цветом
cel::printbracket("1", "Hello World!", color_green); // Вывод брекета с текстом и цветом
cel::seperator_with_text("Text", color_green, color_dark_green, style1, color_red); // Цветной сеператор с текстом
cel::seperator(color_green, style1, color_red); // Цветной сеператор
cel::creeper(color_green); // Крипер >_<
cel::spacing(); // Отступ на одну строку
cel::windowname("Hello world!"); // Имя окна
Как использовать :

1. Скачать с гитхаба func.cpp и funcs.h
2. Загрузить в любую директорию (в проекте)
3. Инклюднуть заголовочный файл funcs.h

Скачать (Вместе с проектом примером) :
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Эксперт
Статус
Оффлайн
Регистрация
17 Янв 2020
Сообщения
2,197
Реакции[?]
718
Поинты[?]
79K
Товары в продаже
1
Пиздец как полезно, я себе скит менюшку сделал на консоле. Спасибо!
 
Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
Работа с консолью - самое простейшее, что есть на С++. Если уж и делать подобные проекты, то хотя бы качественно, а не Cout с SetConsoleTextAttribute. В чем вообще смысл этого, просто сделать оболочку для WinApi с вызовом этих же WinApi, а зачем? Не проще ли вызвать сразу функции, реализаций в этом проекте ноль, это по-сути как kernel32 по отношению к kernelbase, просто оболочка. Причем самое смешное, что у этой "библиотеки" функционал меньше чем у обычного cout за счет статичного количества аргументов.

Видел кто-то даже пытался меню делать на консоли и тоже выкладывал на югейм, и опять же гребаные cout и всё. Если этот проект для подобных задач тоже, то где WriteConsoleOutputCharacter, SetConsoleActiveScreenBuffer, CreateConsoleScreenBuffer. А если это для "удобного" использования консоли, то тут даже нет реализации printf с использованием va_start/va_end, про оптимизацию вообще молчу, это еще хуже чем обычные медленные cout. Если нужен удобный инструментарий и самое главное быстрый для работы с консолью и форматированием, то есть fmt -
Пожалуйста, авторизуйтесь для просмотра ссылки.


Данная тема по сути отчет для учителя 8-го класса по информатике, что ты умеешь использовать cout, но создавать целый проект на гитхабе и выкладывать здесь, это жуть. К чему засирать форум этим, может это покажется обидным, но это хрень не несущая ничего и базовые знания восьмиклассника, такое внимание к домашнему заданию из школы на целый форум и гитхаб уделять одновременно и смешно и грустно. Понимаю, хочется одобрения и признания, но постарайся прикладывать реальные усилия, если ты скажешь, что умеешь дышать, это не даст одобрения и признания, вот тут такая же ситуация, это на уровне дыхания, и если ты хочешь на весь форум показать, что умеешь дышать, это лишь будет похоже на плевок каждому, кто выделит своё время на просмотр этой темы
 
t.me/maj0rblog
Дизайнер
Статус
Оффлайн
Регистрация
6 Окт 2018
Сообщения
975
Реакции[?]
619
Поинты[?]
12K
Работа с консолью - самое простейшее, что есть на С++. Если уж и делать подобные проекты, то хотя бы качественно, а не Cout с SetConsoleTextAttribute. В чем вообще смысл этого, просто сделать оболочку для WinApi с вызовом этих же WinApi, а зачем? Не проще ли вызвать сразу функции, реализаций в этом проекте ноль, это по-сути как kernel32 по отношению к kernelbase, просто оболочка. Причем самое смешное, что у этой "библиотеки" функционал меньше чем у обычного cout за счет статичного количества аргументов.

Видел кто-то даже пытался меню делать на консоли и тоже выкладывал на югейм, и опять же гребаные cout и всё. Если этот проект для подобных задач тоже, то где WriteConsoleOutputCharacter, SetConsoleActiveScreenBuffer, CreateConsoleScreenBuffer. А если это для "удобного" использования консоли, то тут даже нет реализации printf с использованием va_start/va_end, про оптимизацию вообще молчу, это еще хуже чем обычные медленные cout. Если нужен удобный инструментарий и самое главное быстрый для работы с консолью и форматированием, то есть fmt -
Пожалуйста, авторизуйтесь для просмотра ссылки.


Данная тема по сути отчет для учителя 8-го класса по информатике, что ты умеешь использовать cout, но создавать целый проект на гитхабе и выкладывать здесь, это жуть. К чему засирать форум этим, может это покажется обидным, но это хрень не несущая ничего и базовые знания восьмиклассника, такое внимание к домашнему заданию из школы на целый форум и гитхаб уделять одновременно и смешно и грустно. Понимаю, хочется одобрения и признания, но постарайся прикладывать реальные усилия, если ты скажешь, что умеешь дышать, это не даст одобрения и признания, вот тут такая же ситуация, это на уровне дыхания, и если ты хочешь на весь форум показать, что умеешь дышать, это лишь будет похоже на плевок каждому, кто выделит своё время на просмотр этой темы
C++ Я только начал изучать, изначально писал для упрощения своих задач и что бы мои консольные приложение небыли серой мышью.
Буду рад если ты подскажешь что можно сделать для доп обучения
 
Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
C++ Я только начал изучать, изначально писал для упрощения своих задач и что бы мои консольные приложение небыли серой мышью.
Буду рад если ты подскажешь что можно сделать для доп обучения
Пока учись, но не нужно выкладывать подобное, это как пыль в глаза. Всегда должна быть цель что именно сделать, нельзя писать просто код ни о чем, быстро забросишь. В этом плане, вроде как, проблем у тебя нет, идея по типу библиотеки есть. Изучи для начала printf, так-как cout это детский сад, из этого вытекает например изучение динамического количества аргументов, если будет идея сделать меню, игру и т.д. на консоли, то вот тут есть пример использования WriteConsoleOutputCharacter, SetConsoleActiveScreenBuffer, CreateConsoleScreenBuffer для быстрого ввода данных в консоль без использования очищения медленного -
Пожалуйста, авторизуйтесь для просмотра ссылки.


То есть тем миллион, так-же совет - по каждому поводу использовать google и искать на английском языке, если хочется найти какой-либо материал, гайд, пример и т.д. Google, github, для старта youtube это пока твои лучшие друзья. Если ещё не выучил базу С++, то на ютубе тьма уроков по основам С++.

Осмелюсь предположить, что префиксы ты так-же ещё не изучал, да и многого не понимаешь об оптимизации, например используешь по любому поводу в своем проекте std::string, это очень большая проблема, так-же не понимаешь как работают программы на низком уровне. То есть ещё учить и учить, куда не ткни, так-что не останавливайся, продолжай, но не надо останавливаться и делать подобное, это выглядит как "я достаточно выучил, готов публиковать проекты", но подобным ты делаешь хуже лишь себе, учить тебе придется много чего, за 1-2 года только выйдешь на начальный уровень. Так-же С++ это сложный низкоуровневый язык, ты должен понимать это не Питон или C#, где всё на блюдце, здесь если хочешь работать даже хотя бы со строками (не std::string, а низкоуровневой работой с байтами), то ты должен понимать как работают программы на низком уровне и т.д. Начни пока с уроков на ютубе, в начале нужно понимание о С++ как минимум. Это не хейт, а рекомендации, если будешь на таком останавливаться и ждать похвалы, то ничего не добьешься, я лишь помочь хотел
 
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
да и многого не понимаешь об оптимизации, например используешь по любому поводу в своем проекте std::string, это очень большая проблема
Можешь рассказать что не так с std::string (не упрёк, реально интересно)
 
Разработчик
Статус
Оффлайн
Регистрация
18 Мар 2020
Сообщения
442
Реакции[?]
872
Поинты[?]
197K
Осмелюсь предположить, что префиксы ты так-же ещё не изучал, да и многого не понимаешь об оптимизации, например используешь по любому поводу в своем проекте std::string, это очень большая проблема
meme

так-же не понимаешь как работают программы на низком уровне
не в обиду тебе, но полагаю ты сам далеко многого не знаешь шо и как работает на лоу лвле, поэтому к чему ты это написал остается для меня загадкой
 
Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
Можешь рассказать что не так с std::string (не упрёк, реально интересно)
По-сути главная проблема - оптимизация, видимость std::string при реверсе и игнорирование constexpr кода, если используется std::string это тоже проблемы, но вообще это капля в море, по сравнению со скорость. Я в принципе не любитель std, предпочитаю стандартные С библиотеки

meme


не в обиду тебе, но полагаю ты сам далеко многого не знаешь шо и как работает на лоу лвле, поэтому к чему ты это написал остается для меня загадкой
Можно поподробнее?
 
Последнее редактирование:
Легенда форума
Статус
Оффлайн
Регистрация
10 Дек 2018
Сообщения
4,381
Реакции[?]
2,284
Поинты[?]
189K
видимость std::string при реверсе
Не думаю, что это проблема в опенсорс софте :)
если используется std::string это тоже проблемы, но вообще это капля в море, по сравнению со скорость.
Но какие именно, можешь рассказать подробнее? Просто я и сам предпочитаю использовать стд стринг вместо дефолтных чаров, как минимум из-за проблем с их переопределением, ну и встроенный функционал стринга тоже радует)

игнорирование constexpr кода
Алсо, можешь про это тоже рассказать, если не затруднит. Насколько велика разница между обычной, не константной переменной, но которая при том ни разу не изменяется и той же переменной, но уже константной? (какая-то обратная тавтология, кекв) Из-за чего она (разница) существует?
 
t.me/maj0rblog
Дизайнер
Статус
Оффлайн
Регистрация
6 Окт 2018
Сообщения
975
Реакции[?]
619
Поинты[?]
12K
Пока учись, но не нужно выкладывать подобное, это как пыль в глаза. Всегда должна быть цель что именно сделать, нельзя писать просто код ни о чем, быстро забросишь. В этом плане, вроде как, проблем у тебя нет, идея по типу библиотеки есть. Изучи для начала printf, так-как cout это детский сад, из этого вытекает например изучение динамического количества аргументов, если будет идея сделать меню, игру и т.д. на консоли, то вот тут есть пример использования WriteConsoleOutputCharacter, SetConsoleActiveScreenBuffer, CreateConsoleScreenBuffer для быстрого ввода данных в консоль без использования очищения медленного -
Пожалуйста, авторизуйтесь для просмотра ссылки.


То есть тем миллион, так-же совет - по каждому поводу использовать google и искать на английском языке, если хочется найти какой-либо материал, гайд, пример и т.д. Google, github, для старта youtube это пока твои лучшие друзья. Если ещё не выучил базу С++, то на ютубе тьма уроков по основам С++.

Осмелюсь предположить, что префиксы ты так-же ещё не изучал, да и многого не понимаешь об оптимизации, например используешь по любому поводу в своем проекте std::string, это очень большая проблема, так-же не понимаешь как работают программы на низком уровне. То есть ещё учить и учить, куда не ткни, так-что не останавливайся, продолжай, но не надо останавливаться и делать подобное, это выглядит как "я достаточно выучил, готов публиковать проекты", но подобным ты делаешь хуже лишь себе, учить тебе придется много чего, за 1-2 года только выйдешь на начальный уровень. Так-же С++ это сложный низкоуровневый язык, ты должен понимать это не Питон или C#, где всё на блюдце, здесь если хочешь работать даже хотя бы со строками (не std::string, а низкоуровневой работой с байтами), то ты должен понимать как работают программы на низком уровне и т.д. Начни пока с уроков на ютубе, в начале нужно понимание о С++ как минимум. Это не хейт, а рекомендации, если будешь на таком останавливаться и ждать похвалы, то ничего не добьешься, я лишь помочь хотел
Спасибо за совет!
Использовал стринги потому что не знал тогда про const char*
 
Олдфаг
Статус
Оффлайн
Регистрация
5 Июл 2017
Сообщения
2,108
Реакции[?]
1,189
Поинты[?]
0
Не думаю, что это проблема в опенсорс софте :)

Но какие именно, можешь рассказать подробнее? Просто я и сам предпочитаю использовать стд стринг вместо дефолтных чаров, как минимум из-за проблем с их переопределением, ну и встроенный функционал стд стринга тоже радует)


Алсо, можешь про это тоже рассказать, если не затруднит. Насколько велика разница между обычной, не константной переменной, но которая при том ни разу не изменяется и той же переменной, но уже константной? (какая-то обратная тавтология, кекв) Из-за чего она (разница) существует?
Если оптимизация не проблема, то тогда никаких. Это по-сути даже не просто std::vector char'ов как std::string_view (а именно basic_string_view<char>, и кстати string_view не перегружен ненужными данными, но при этом имеет такой-же функционал для работы со строками, как и std::string, а значит будет куда быстрее, только нужно переключиться минимум на С++17 стандарт), это еще более сложная конструкция в std::vector (а именно basic_string<char, char_traits<char>, allocator<char>>). Хотя, std::basic_string ещё более нагруженный std::vector. Однако, если ты не будешь редактировать последовательность байт, всё равно всплывает вопрос, зачем использовать std::string, еще и использовать лишние .c_str() постоянно чтобы сформировать обычную последовательность байт, и так каждый раз, не проще ли сразу работать с последовательностью байт, обычным массивом char'ов.

constexpr используется для вычисления значения во время компиляции по возможности в основном, так вот если строка будет задействована, то компилятор оставит выполнения кода во время выполнения программы, опять же, не думаю что для тебя это будет проблема. Это специфично, мало когда и кому это нужно будет.

Единственный плюс std::string это простота редактирования строки, если пофиг на оптимизацию, то в целом пофиг.

С переопределениями я вообще не понял что за проблема, какая разница? Встроенные методы для работы со строкой да, это действительно удобно.
То есть проблема главная просто с оптимизацией, для чита или в драйвере явно не рекомендуется такое использоваться, а вот в обычной программке, почему нет (при условие, что строка будет редактироваться, иначе это лишь усложнение)


Спасибо за совет!
Использовал стринги потому что не знал тогда про const char*
std::string это хорошая вещь если знаешь для чего, но ты не производишь ведь даже никаких манипуляций со строками, const char* в данном случае за глаза хватит, я бы std по необходимости лишь использовал (я лично к std отношусь с скепсисом, на С больше начал писать код последнее время. Но в общем у всего должно быть объяснение, тут это не обосновано в любом случае было).
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
16 Дек 2020
Сообщения
24
Реакции[?]
4
Поинты[?]
0
1. Посмотри как работает форматирование на примерах даже стандартных sprintf и добавь его в свои функции.
2. Добавь каких-то фич, которые действительно будут полезны. К примеру, удаление записанных строк, перезаписывание текущей строки.
3. Определись, проблема которую решает либа это украшение консоли или же помощь в логгировании?
Можешь рассказать что не так с std::string (не упрёк, реально интересно)
может он про возможные копии? в плюсах появился string_view, который является лишь оберткой поверх массива с чарами, что решает проблему копирования в стринге
 
Сверху Снизу