Если вы работаете со строками в С++ - то вы либо пишете низкоуровневые утилиты - а значит, должны без проблем суметь найти и использовать библиотеку работы с UTF-8, либо пишете десктопное приложение на фреймворке, в котором стопудово уже есть реализация строки, работающая с юникодом, и ничего другого вам не нужно.
Начинающему Крестовику не стоит учиться виндоус-онли программированию исключительно в Студии.
Это делает его ущербным специалистом, для которого выход за пределы изученных интерфейсов и руководств становится проблемой.
Так что если вы поставите себе тот же КьютКриэйтор вместо ВизуалСтудии и будете использовать gcc/clang для сборки - все нормально... непонятно только, зачем вам тогда вообще сидеть на Виндах.
В С++ двумерный динамический массив передается в функцию так: void Foo(std::vector< std::vector <int> > &matrix)
А онанизм с массивами указателей - это спагетти и гарантированные утечки и сегфолты.
Очевидно, на втором витке спирали в центральную ячейку записывается еще одно значение.
Либо на бумажке повтори алгоритм с реальными цифрами, либо после каждого присвоения сделай вывод информации, по каким координатам произошла запись. Сам увидишь ошибку.
несколько месяцев изучаю
Думаю почитать книжечку
явно не смогу понять
если вдруг начну читать
придется начинать изучать
нужно будет по сто раз переучиваться
пугает.
Учебник по С++ от его создателя, насколько мне известно, не устарел и не имеет противопоказаний.
Под "компилятором" вы, скорее всего, имеете в виду IDE.
Во избежание дурных влияний посмотрите, например, на Code::Blocks.
Когда решите, что язык вам понятен и можно переходить к крутым программам с кнопочками - QtCreator.
"Средства чистого С++" ни черта не знают о той системе, в которой запущены и ничем не смогут вам помочь в поиске путей и процессов. Для каждой системы потребуется свое собственное решение.
Аналогичный вопрос обсуждается здесь: https://stackoverflow.com/questions/171213/how-to-...
Поскольку никакого смысла, кроме учебного, в такой затее быть не может - попробуйте повторить эту работу под Линукс, будет полезно.
Ставите QtCreator, загоняете в проект свои исходники, разбираетесь, что в них прибито гвоздями к Виндам и как это сделать нормально, а не по виндометодичкам.
Глядишь, и научитесь писать на С++, а не в VisualStudio.
Если не хотите, чтобы ваши знания С++ стали неактуальными прежде, чем вы сможете их применить - избегайте в учебе любых материалов и программ с ключевыми словами "Microsoft" и "Visual".
C++ сам по себе не панацея. Его надо уметь готовить.
Разница в 2 раза вполне реальна, просто не надо думать, что ее даст тупое переписывание тех же самых операторов.
С++ просто дает возможность низкоуровневой оптимизации там, где в других языках она невозможна.
Например, ваши new-delete в цикле жрут немало времени, но без них можно обойтись.
Выделяется память под экземпляр класса В, запускается его конструктор, возвращаемая конструктором ссылка нигде не используется, деструктор никогда не вызывается.
Просто-таки академическая утечка памяти.
Судя по этому говнокоду, причина ошибки может быть где угодно в прочем коде.
Если не боитесь ангельского - взгляните на https://cocos2d-x.org/download
Сейчас как раз пересобираю под iOS программу, обновленную под Андроидом.
Десктопные порты там тоже есть.
Но это на случай, если у вас именно игрушка с графикой и минимумом GUI.
Гуевые приложения лучше все-таки делать на Qt, там инструментарий заметно побогаче.
Curl - это утилита, libCurl - это библиотека для С++, которую можно просто подключить в проект и скомпилировать вместе с программой.
При этом она заметно проще того же boost::asio, например.
Полиморфизм - это создание дочерних классов, каждый из которых является разновидностью базового.
Реализация интерфейса всего лишь означает, что класс умеет давать ответы на некоторый набор вопросов. При этом являться он может быть чем угодно.
Например, класс офисной мебели может иметь подклассы - стулья и столы, каждый из которых является мебелью. При этом любой предмет в офисе должен реализовать интерфейс инвентаризации - выдавать свой инвентарный номер, чем бы он ни являлся.