Задать вопрос
Ответы пользователя по тегу C++
  • Есть ли аналог str.charCodeAt(index) для С++?

    Adamos
    @Adamos
    "Для С++" - это слишком расплывчато.
    Если речь об однобайтных строках (char[], char* или std::string) - то str[idx] будет тем самым нужным вам значением.
    Но только в том случае, если содержимое в однобайтной же кодировке.
    А если там, скажем, utf-8 - то тут вы вряд ли обойдетесь без соответствующей библиотеки.
    Ответ написан
  • Что лучше изучать впервые? WinAPI || Boost || Qt?

    Adamos
    @Adamos
    Весь список бессмысленно просто учить - его надо изучать, уже применяя в живом проекте.
    Поэтому Qt имеет смысл ставить первым - шире сфера применения.
    Boost еще надо поискать, где применить в обычном прикладном приложении...
    WinAPI имеет смысл изучать только в том случае, если вам хочется заниматься win-only программами.
    Для программирования "и под Windows тоже" мне лично он не требуется.
    Две-три функции, которые не реализованы в кроссплатформенных библиотеках, можно просто нагуглить.

    > Часто ли разработка на C++ ведется под Windows?
    На Тостере появляются вопросы от студентов, которые борются с Вижуал Студией вместо того, чтобы программировать. Часто появляются. Лучше сразу привыкнуть к QtCreator - и вам будет все равно, какая под ним ОС.
    Ответ написан
    Комментировать
  • Использование вариативного шаблона функции без аргументов?

    Adamos
    @Adamos
    Я бы в вашем случае погасил лампадку перед портретом Александреску и перестал насиловать компилятор.
    Добиваясь поставленной цели, вы запутываете код - и при этом решительно ни в чем не выигрываете.
    Ответ написан
    Комментировать
  • Что делает этот кусок кода?

    Adamos
    @Adamos
    Считывает в header.signature первые 6 байт из файла.
    Как это делается - см. учебник по С++ (просто заявить "непонятный момент" недостаточно).
    Ответ написан
    Комментировать
  • Какие возникают проблемы при работе с Unicode и какие им есть решения на C++?

    Adamos
    @Adamos
    UTF8-CPP - использовал, когда приходилось писать без использования кроссплатформенных фреймворков. Основные проблемы решает.
    Главное - привести все входящие строки к utf-8 и не забыть их конвертировать в выходную кодировку, если это требуется. А вся обработка - только в utf-8, готовых решений для этого более чем достаточно.
    Ответ написан
  • Почему так сильно глючит редактор?

    Adamos
    @Adamos
    С тем, что MS предпочитает, чтобы вы писали на ее фирменном Шарпе, а не на этих Крестах, с которыми можно свалить с Виндов и сделать ручкой.
    Поэтому разбор крестового кода проводит тормозной монстр Intellisense, и летать он не будет уже, похоже, никогда.
    Ставьте QtCreator или Code::Blocks, если хотите, чтобы IDE не мешала вам работать. Заодно от подоконника отвыкнете...
    Ответ написан
    Комментировать
  • Мало весящий IDE для С++?

    Adamos
    @Adamos
    Полноценный (с анализом кода и прочими плюшками) и при этом легкий - вещи сугубо взаимоисключающие.
    VisualStudio с С++ ведет себя так, как будто рекламирует С# (ирония, но недалекая от истины). Анализ кода там тормозит безбожно, на слабом железе его просто не дождешься. Хотя, может быть, хэлловорды он и быстро будет прожевывать...

    Eclipse, NetBeans, Clion - это все-таки Java со всеми из нее вытекающими - медленно и печально. Для слабого железа опять-таки противопоказано.

    QtCreator - имеет довольно много плюсов, но объем действительно может зашкаливать, так как он тащит за собой весь Qt в обязательном порядке.

    Есть легкие Code::Blocks и CodeLite - в принципе, настолько легкие, что их просто стоит попробовать, а если будет некомфортно - тогда уже подниматься по этому списку вверх ;)

    Альтернатива в порядке бреда: поставить какую-нибудь древнюю VS, которая еще нормально жевала С++ на слабых машинках (то есть до 2008 версии). Если она запустится на "десятке", то для изучения "крестов" может вполне сгодиться. С++0х и С++11, правда, придется исключить из учебной программы.
    Ответ написан
    2 комментария
  • Как работает деинсталятор?

    Adamos
    @Adamos
    А зачем вы пишете деинсталлятор, когда есть готовые, полноценные и при этом бесплатные решения вроде NSIS, например?
    Ответ написан
    Комментировать
  • Почему не компилируется helloworld с использованием wxWidgets?

    Adamos
    @Adamos
    Вообще-то актуальная версия библиотеки - третья.
    У вас же почему-то линкер ищет библиотеки для 2.8
    Ну, и, скачав эту библиотеку с официального сайта, первым делом ее саму надо скомпилировать.
    По инструкции с того же сайта.
    Ответ написан
  • Какую книгу выбрать?

    Adamos
    @Adamos
    Для начала - любой учебник по С++, кроме учебников по VisualC++ и BorlandC++ (эти плохому научат).
    Потому что С++ имеет такую особенность: 80% языка принципиально непонятны и чужды тому, кто еще не освоил базовые 20% и не имеет достаточного практического опыта их применения.

    Вам нужно самостоятельно написать километры говнокода, чтобы понять правильный подход к ООП в С++, шаблоны, достоинства ссылок перед указателями, применение const и т.п. Никакой учебник тут не поможет.
    Ответ написан
    3 комментария
  • Не открывается файл?

    Adamos
    @Adamos
    В С++11 функция std::ifstream::open принимает аргументом std::string.
    Калечить путь переводом c_str не нужно.
    Ответ написан
    Комментировать
  • Почему изменяются значения полей объекта структуры?

    Adamos
    @Adamos
    Студенчеству, конечно, многое простительно, но зачем использовать С++ как С?
    MAX_SURNAME_SIZE - это сколько? У моей супруги двойная фамилия (24 символа). Влезет?
    MAX_PASSWORD_SIZE - сколько? Один из моих паролей - легко запоминающаяся, не подбираемая фраза на 36 символов.
    А всего-то - перегнать этот "FILE * accounts" в банальный XML и читать его чем-нибудь типа pugixml.
    И никаких плясок с памятью и переполнением, и никаких ограничений на длину и язык поля, и никаких простыней одинаковых операторов, в любом из которых может крыться досадная опечатка.

    И никоим образом не уменьшит секьюрность, если что. Потому что ваш бинарный файл читается глазами без всяких проблем... Пароли-то - открытым текстом, небось? Хэш и соль еще не проходили?

    А если этот код действительно будет использоваться, то первое, что с ним можно будет сделать - это перевести в скрипт на сервере. Нет, я не про ваш говнокод - его проще заново переписать...
    Ответ написан
  • Какие есть библиотеки для c++ для получения цвета пикселя изображения?

    Adamos
    @Adamos
    Вы какой-нибудь GUI-фреймворк для программы используете?
    С высокой вероятностью в нем уже есть такой функционал.
    Ответ написан
  • Почему константное значение Qstring?

    Adamos
    @Adamos
    Передавая в функцию const QString &peer, вы:
    1. не тратитесь на копирование ее содержимого
    2. имеете к ней такой же доступ, как к локальной переменной
    3. но не можете изменить

    Обычно ради 1 и 3, собственно, const-ссылки и используются. Особенно если объект еще сложнее, и его копирование невозможно или нежелательно в принципе.
    Ответ написан
    Комментировать
  • Стоит ли делать в таком случае базовый класс и наследоваться от него?

    Adamos
    @Adamos
    Нет, так делать не стоит.
    Вы таким наследованием нарушаете L в SOLID.
    Ответ написан
    2 комментария
  • Изменяются данные в массиве без ведома?

    Adamos
    @Adamos
    Если у вас меняются те данные, которые вы не предполагали менять - очевидно, где-нибудь какое-нибудь tmp[n * n + n + i] указывает не на элемент этого массива, а за его пределы (индекс получается больше размера массива).
    Ответ написан
    Комментировать
  • Как применить динамическую память для хранения соразмерного количества символов с ввода?

    Adamos
    @Adamos
    А с чего бы его принимать?
    У вас выделяется динамическая память размером в один байт.
    Потом, начиная с этого адреса, впихивается весь ввод.
    Уже на втором символе программа просто обязана упасть.
    Причем даже при вводе длиной в один символ этим вторым будет завершающий ноль.

    Даже в задании написано про перевыделение памяти - какого, собственно?
    Ответ написан
  • Какие знания по математике для создания игр на C++?

    Adamos
    @Adamos
    Чтобы создать на движке Unreal, например, крестики-нолики - арифметики будет достаточно.
    Ответ написан
    Комментировать
  • Почему программисты не любят возврат константных ссылок в C++?

    Adamos
    @Adamos
    На самом деле, в жизни все может оказаться несколько сложнее. Если вы передаете по ссылке член класса, который сам является классом и содержит, например, контейнеры - то передача по ссылке не запустит конструктор копирования. Время это сэкономит, но создаст зависимость дальнейшей жизни кода от того, что там происходит внутри класса. То есть потенциальные грабли, от которых потом замучишься избавляться.
    А программирование, как известно - это в первую очередь управление сложностью. Оптимизации стоят намного ниже в списке.
    Ответ написан