Evgenii
делов то
Evgenii
щас бы называть другой стиль кода поганым🤦‍♂
Berkus
илья, 10 лет назад я в коде не делал НИ ЕДИНОЙ ОПЕЧАТКИ (примерно за 10 лет как раз). А потом начал, внезапно.
Berkus
так что юношеский максимализм пройдет
Evgenii
это точно, что ты выдумал какую-то проблему
kitsu
ну, вернее там есть вариант через throw, но хочется compile-time ошибки
Таки что, тут совсем никак нельзя выкидывать ошибки компиляции, только в рантайме ловить?
kitsu
на слона денег нет, сорь
Berkus
когда есть нужные тулы и умеешь ими пользоваться - никаких проблем. изобретатели этого стиля по-моему сидели всю жизнь в nano и компилировали с -Wnone
Nikita
В рантайме обнаружишь. Придёт баг от саппорта, когда у юзера баганет. А у него самолёт разбился из-за твоей глупой ошибки
Vitaliy
Только если он не в ракете) Тоже считаю, что лучше ошибки в компайлтайме, чем в рантайме.
Vitaliy
Кстати, тут тему конана поднимали.
Vitaliy
Объясните, пожалуйста, я правильно понимаю, что он подрубается в cmake и во время генерации файлов просто тянет нужные библиотеки из репозитория ?
Igor
если совсем утрировать, то да попутно ещё библиотеки кэшируются у тебя на диске для дальнейшего использования, а подрубаться он может не только в смак
Vitaliy
А conan сейчас best practice считается ?
Vitaliy
По подключению либ
Nikita
А conan сейчас best practice считается ?
Не то, чтобы best practice, но если есть — то неплохо
Vitaliy
А как там обстоят дела с большими библиотеками ? Например, могу ли я вытянуть часть boost или opencv ?
Vitaliy
Или только либу целиком ?
Igor
А как там обстоят дела с большими библиотеками ? Например, могу ли я вытянуть часть boost или opencv ?
можешь подключить кастомный репозиторий bincrafters, у них есть модульный буст
Vitaliy
Значит от репозитория зависит ?
Vitaliy
in development, скорее
Что значит in development ?
Igor
да репозитории могут быть как публично доступными, так и огороженными в рамках локальной сети компании, например
Nikita
Что значит in development ?
Сыроват и активно развивается. Если есть своя монструозная легасятина — то ещё рано ещё на conan менять
Berkus
он качает и ставит депенденсы и создает конфиг файл для твоей билдсистемы, cmake одна из поддерживаемых опций
kitsu
https://blog.jupyter.org/interactive-workflows-for-c-with-jupyter-fe9b54227d92
PRoSToC0der
Есть ли какой-нибудь стандартный способ вывода std::u32string через std::cout/std::wcout? По идее можно конвертнуть std::u32string в multi-byte string с помощью std::c32rtomb, но "примет" ли такую строку std::cout? Различает ли как-нибудь стандарт single-byte string и multi-byte string? Можно ещё попробовать конвертнуть multi-byte string в wide string (с помощью std::wcrtomb) и вывести через std::wcout, но тут также возникают два вопроса может ли вместить multi-byte string все символы юникода и может ли вместить wide string все символы юникода?
Berkus
u32 это по твоему какая кодировка?
Berkus
а какая в wcout?
Berkus
стандарту похую
Berkus
конвертируй в нужную кодировку и в ней выводи
Dr. Friedrich
http://en.cppreference.com/w/cpp/string/multibyte/c32rtomb > The multibyte encoding used by this function is specified by the currently active C locale.
Olesya
Vlad
:)
Olesya
слушай, ну каждому своё. мне им действительно проще пользоваться, чем заморачиваться с локалями и прочим. тем более, что под мою задачу это больше подходило.
Anton
Мне в одном проекте надо было преобразовывать из cp866 в utf8 самое простое и быстрое (в плане процессорного времени) оказалось сделать свою функцию с длиннее Ким switch/case )
Anton
Да и не люблю я эти wstring...
PRoSToC0der
http://en.cppreference.com/w/cpp/string/multibyte/c32rtomb > The multibyte encoding used by this function is specified by the currently active C locale.
А где можно посмотреть, что такое currently active C locale? (и вмещает ли эта multibyte кодировка все юникод символы?) И как сделать так, чтобы std::cout выводил именно в этой локали (или кодировке, уже путаюсь)?
Olesya
Мне в одном проекте надо было преобразовывать из cp866 в utf8 самое простое и быстрое (в плане процессорного времени) оказалось сделать свою функцию с длиннее Ким switch/case )
у меня тоже есть свой конвертер из utf8 в 32, но вот с преобразованием заглавных букв я бы застрелилась (потому что в юникоде диапозоны букв по-разному раскиданы), поэтому использовала icu)))
PRoSToC0der
Просто в c32rtomb ничего не написано про ошибки в случае, если c32 не представим в multibyte кодировке, значит по идее любой юникод символ должен быть представим в multibyte кодировке
Vlad
у Яндекса в опенсорсе есть функции конвертирования туда-сюда кстати
Vlad
https://github.com/catboost/catboost/blob/master/util/charset/wide.h#L346
Olesya
я согласен что лучше делать utf32->utf8 чем локали ковырять :) просто ICU - это как космолёт :)
ну у них документация норм, день потупишь - найдёшь решение задачи)
Olesya
в масштабах вселенной вообще любая проблема не важна)
Olesya
но мне вот очень надо было) только наоборот, заглавные в строчные
Alexander "SonnySlave"
https://habrahabr.ru/company/otus/blog/343566/.it
Berkus
если тебе надо какие-то преобразования с символами делать - тогда да, без ICU мало куда можно податься
Olesya
прости, но utf конвертируется в utf прекрасно без всяких дополнительных библиотек, это не перекодировка чарсетов ВООБЩЕ
я просто не знаю, какая у него задача. так-то можно и самому написать. но раз человек спрашивает про сторонние средства, значит, не так всё просто.
Berkus
это UTF-32
Berkus
но я тебе про mb сторону конверсии
Berkus
а ты мне почему-то про c32
PRoSToC0der
но я тебе про mb сторону конверсии
просто я не понимаю где в описании c32rtomb есть ограничение на возможность конверсии
PRoSToC0der
Ограничение в этом заключается? At most MB_CUR_MAX bytes can be written by this function.
Berkus
> Converts a UTF-32 character to its narrow multibyte representation. narrow
Berkus
дальше все зависит от кодировки, как я сказал в UCS2 влезает не весь юникод
PRoSToC0der
> Converts a UTF-32 character to its narrow multibyte representation. narrow
Т.е. если символ не представим, то он просто "урежется" без всяких ошибок и прочего?
Alexander "SonnySlave"
статья полезна. не полезна только своими числами, не более
Alexander "SonnySlave"
и автор закладывал совершенно иной смысл, я так думаю
PRoSToC0der
if c32 is not a valid 32-bit character valid 32-bit character это валидный символ с точки зрения UTF-32 или с точки зрения multibyte кодировки?
Alexander "SonnySlave"
ну и не видь дальше, мне то что
Alexander "SonnySlave"
но зачем в этой статье С++ вообще?)
Alexander "SonnySlave"
тут как бы он и не нужен
PRoSToC0der
это хороший вопрос, ничего по этому поводу не написано
http://en.cppreference.com/w/c/string/multibyte/c32rtomb В C документации несколько другое описание Converts a single code point from its variable-length 32-bit wide character representation (but typically, UTF-32) to its narrow multibyte character representation. If the macro __STDC_UTF_32__ is defined, the 32-bit encoding used by this function is UTF-32; otherwise, it is implementation-defined. In any case, the multibyte character encoding used by this function is specified by the currently active C locale. Причём в C++ доках есть такой же макрос http://en.cppreference.com/w/cpp/string/multibyte __STDC_UTF_32__ indicates that UTF-32 encoding is used by mbrtoc32 and c32rtomb (macro constant)
PRoSToC0der
И здесь http://www.cplusplus.com/reference/cuchar/c32rtomb/ If the __STD_UTF_32__ is defined, c32 shall follow UTF-32 encoding.
Berkus
ну вот
Alexander "SonnySlave"
ну так они тормозят, если брошены)