• Как собрать портфолио для разраба на С++?

    Adamos
    @Adamos
    Если интервьюер действительно заинтересован в вашей кандидатуре (и разбирается в том, на что интервьюирует) - он бегло глянет на код, нормально ли он оформлен и не страшно ли его читать, и продолжит беседу, уже на тему "а что вы в этой программе сделали и как". Проверяя именно то, насколько увлеченно человек рассказывает о своей работе и насколько он вообще способен описать другому, что там наваял.
    Так что портфолио - это не только самоцель и демонстрация чего-то там, но и наглядное пособие для вашей презентации себя как специалиста. Если, конечно, вы не на конвейере у эйчара, который это портфолио сам даже оценить не может.
    Ответ написан
    Комментировать
  • Как собрать портфолио для разраба на С++?

    @roman_123456
    Так примеры кода не обязательно проект целиком. Выложите законченные классы, которые решают какую-то задачу. Кратно опишите что нужно было сделать и как получилось.
    Посмотрят:
    1. нормальное именование переменных, методов;
    2. что вы передаете параметры по ссылкам, а не по значению;
    3. везде, где можно, обмазано const и слава богу;
    4. жестко придерживаетесь одного стиля кодирования, нет лишних пробелов и строк, там где оно не надо, скобки всегда стоят одинаково;
    5. нет лишних инклудов, везде где можно forward declaration
    6. разок другой лямбды использовали;
    7. в коде есть слова const (много, везде), override, explicit
    8. Есть шаблонная функция или класс (типа люблю, умею, практикую)

    И позовут на собес или задание дадут. Думаю, первых 4 пунктов достаточно для начала.
    Ответ написан
    2 комментария
  • Как коректно переобразовать тип wchar_t в string?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Тип WCHAR зависит от настроек проекта и может быть как псевдонимом char, так и wchar_t. Широкое использование этого типа во всем проекте не рекомендуется, т.к. повсеместно вносит неопределенность.

    Для хранения Unicode строк (у тебя же 2017 студия и c++17 по умолчанию) уже давно существует сразу несколько типов строк: std::wstring, std::u16string и std::u32string.

    Тип std::wstring хранит символы типа wchar_t, который, в зависимости от настроек компилятора, может занимать 2 или 4 бйта. Это делает тип std::wstring столь же неоднозначным, как и WCHAR. Поэтому и были созданы типы со строгим размером символа: std::u16string и std::u32string. Сейчас рекомендуется пользоваться ими вместе с std::string.

    Сам твой вопрос заключается не в преобразовании типа, т.к. это легко сделать с помощью std::transform и лямбды, а в преобразовании однобайтовой (std::string) кодировки в Unicode и обратно.

    Для этого в стандартной библиотеке уже тоже есть всё нужное.
    Пример кода
    template< typename TCharType, typename TCharTraits, typename TStringAllocator >
    inline void Convert( const std::string& source_string, std::basic_string<TCharType, TCharTraits, TStringAllocator>& dest_string )
    {
    	std::wstring_convert<std::codecvt_utf8_utf16<TCharType>, TCharType> converter;
    	dest_string = converter.from_bytes( source_string );
    }
    
    template< typename TCharType, typename TCharTraits, typename TStringAllocator >
    inline void Convert( const std::basic_string<TCharType, TCharTraits, TStringAllocator>& source_string, std::string& dest_string )
    {
    	std::wstring_convert<std::codecvt_utf8_utf16<TCharType>, TCharType> converter;
    	dest_string = converter.to_bytes( source_string );
    }


    А помимо стандартной библиотеки все нужное есть еще и в WinAPI, и в C Run-Time Library.
    Ответ написан
    2 комментария