• Существуют ли правила подключения include-файлов в С++?

    15432
    @15432
    Системный программист ^_^
    Я в проектах делаю так:
    • в шапке .h файла #pragma once
    • в .h файле только описание класса - члены, методы, иногда структуры
    • инклюдим в .h другие .h только если этого требует описание класса
    • всё остальное необходимое для реализации инклюдим в .cpp
    Ответ написан
    3 комментария
  • Как заменить символы в текстовом файле?

    TrueBers
    @TrueBers
    Гуглю за еду
    Подскажите как это лучше всего сделать с использованием только стандартных библиотек C++?

    Если прям true C++ way, то вам нужно использовать std::fstream. Для него нужно реализовать стандартный std::streambuf и во время записи в файл, когда буфер сбрасывается, у std::streambuf вызывается виртуальный метод overflow(), вот его перегружаете, проходите по буферу, делаете нужные вам изменения и сбрасываете буфер дальше на запись. Примерно, как тут.
    Это если важна архитектура, гибкость, переиспользование кода и трушность C++.

    А если более-менее простой вариант, то недо-true C++ way выглядит
    примерно так
    #include <algorithm>
    #include <fstream>
    #include <iostream>
    #include <iterator>
    
    int main() {
    
      std::ofstream out_file( "out.txt" );
      std::ifstream in_file( "in.txt" );
      std::string/*stream*/ some_buffer;
    
      using char_type = decltype(out_file)::char_type;
      using in_iter = std::istream_iterator< char_type >;
    
      if ( !in_file.is_open() || !out_file.is_open() )
        return EXIT_FAILURE;
    
      std::transform(in_iter(in_file), in_iter(), std::ostream_iterator< char_type >(out_file),
                     [&some_buffer] (const char_type &c) {
    
                       if ( !std::isalpha( static_cast<unsigned char>(c) ) || c == '\n' || c == '\r' )
                         return ' ';
    
                       // if шило, then мыло, буферизуем если надо, и т. п.
    
                       return c;
                     });
    
      return EXIT_SUCCESS;
    }
    Ответ написан
    3 комментария
  • Что читать после Лафоре?

    @res2001
    Developer, ex-admin
    Начинайте уже писать.
    Ответ написан
    6 комментариев
  • Python Какая принципиальная разница в записи условия?

    Bastax13
    @Bastax13
    Во-первых, первый вариант более читабельный. Лично я всегда использую именно "полный" вариант условия, если этот проект в будущем будет поддерживаться (другими людьми в т.ч.).
    Во-вторых, как написал Roman Kitaev, "короткая" конструкция требует наличия else, а иногда этот else нам просто ни к чему.
    Ответ написан
    3 комментария
  • Python Какая принципиальная разница в записи условия?

    @deliro
    Разница в том, что вторая конструкция требует else
    Ответ написан
    Комментировать
  • Как лучше собрать Boost?

    Разницы нет. Работать будет одинаково.
    Осталось выяснить: вы понимаете различия между статической и динамической библиотекой?
    Ответ написан
    2 комментария
  • StackOverflowException в свойствах?

    Android97
    @Android97
    Бэкенд и немного фронтенд разработчик
    Создайте private поле, назовите его допустим String[] _savesName.
    Далее перепишите свойство:
    public String[] SavesName
            {
                get => _savesName;
                set
                {
                    _savesName = value;
                    cbSaves.Items.Clear();
                    if (value != null) cbSaves.Items.AddRange(value);
                }
            }
    Ответ написан
    Комментировать
  • StackOverflowException в свойствах?

    devspec
    @devspec
    Помогло? Отметь решением
    Проверьте на бесконечную рекурсию.
    Ответ написан
    8 комментариев
  • Как перевести код из С++ в Си?

    @Mercury13
    Программист на «си с крестами» и не только
    Перед нами совершенно необъектный код, на вид тупо написанный на Си средствами Си++. Так что будет несложно.
    1. Убрать из структуры private/public.
    2. Вынести функции из структуры, явно прописав в них this:
    int BMP::Load(char FileNames[])
    →
    int BMPLoad(struct BMP* this, char FileNames[])

    3. Для старых версий Си — поднять определения всех переменных на верх функции.

    А что нам с масштабированием? — на вид написан на том же Си и ничего не требует, кроме задания этого this.
    Ответ написан
    3 комментария
  • Почему нет C++17?

    TrueBers
    @TrueBers
    Гуглю за еду
    Потому что скриншот маркетинговый. С++17 ещё не принят окончательно. Т. е. его ещё не существует как такового в виде релиза, хоть и изменений вноситься уже не будет. А даже когда примут, пройдёт миллион лет, как студия начнёт его поддерживать. Ставьте latest и не парьтесь.
    Ответ написан
    3 комментария
  • Как сделать метод добавления элемента в массив класса?

    vt4a2h
    @vt4a2h Куратор тега C++
    Senior software engineer (C++/Qt/boost)
    1) Забудьте про char*/char[] в вашей задаче это лишнее. Есть std::string.
    2) WriterData -> Writer. И лучше написать просто struct Writer {};
    3) Данные надо хранить в std::vector (или другом контейнере, этот вопрос должен обсуждаться отдельно), тогда и переменная count не понадобится. Вероятно это должен быть вектор std::shared_ptr.
    4) getWriters -> writers, и возврашать он должен вектор, не принимая никаких аргументов и быть const методом. Вопрос ещё, нужен ли вообще этот метод.
    5) insertWriter -> addWriter, принимать опять же два std::string const&. Возможно так же возвращать std::shared_ptr с только что созданным писателем, что не обязательно, смотрите по задаче.

    PS Вообще, devalone посоветовал вам двигаться в правильном направлении, т.е. почитать книжки по C++ и доки.
    Ответ написан
    Комментировать
  • Как подключить БД в QT и отправлять туда данные?

    IGHOR
    @IGHOR Куратор тега Qt
    Qt/C++ DEV/CTO
    Подключиться к базе
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL","CurrentThread");
    db.setDatabaseName("table");
    db.setUserName("username");
    db.setHostName("localhost");
    db.setPassword("123456");
    db.open();

    Отправлять запрос
    QSqlQuery query(db);
    if(query.exec("SELECT * FROM `Users`"))
    while(query.next())
    {
    //query.record().value("Name").toString();
    }
    Ответ написан
    Комментировать
  • Операционная система для умного дома на C++ c полного нуля. Как?

    GavriKos
    @GavriKos
    А почему арм и малина? Это ж несолидно. Делайте свои микроконтроллеры! Добывайте кремний, разрабатывайте схему. А там и свой ASM и ось подтянутся.
    Вот ваш вопрос примерно из той же категории, если что.
    Ответ написан
    Комментировать
  • Операционная система для умного дома на C++ c полного нуля. Как?

    CityCat4
    @CityCat4
    Внимание! Изменился адрес почты!

    КОММЕРЧЕСКУЮ систему умный дом.
    Брать что-то за основу для подобного проекта - не солидно, и поэтому было решено делать свою ОС


    Дальше можно не читать... Но если в порядке бреда предположить, что это не толстый-толстый троллинг, то начинать надо с бизнес-плана. А вовсе не с выбора железа, софта, ЯП и т.д. Вы же хи-хи, КОММЕРЧЕСКУЮ систему собираетесь пилить :ROFL: Поэтому, прежде чем делать очередной недо-линух, сядьте и подумайте:
    - кто потребитель
    - каковы затраты
    - каковы предполагаемые продажи
    - какая схема лицензирования
    ...
    и если после всех вопросов еще не barf от всей этой скуууууучной совсем не технической нудной ерунды - дерзайте. Поди еще и протоколы взаимодействия будете сами разрабатывать? А чо? Существующие протоколы - несолидно...

    :ROFL:
    Ответ написан
    Комментировать
  • Операционная система для умного дома на C++ c полного нуля. Как?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    1. Берете язык программирования (хоть Javascript, компилированный V8), пишете, PROFIT.
    2. Классика жанра же: Танненбаум, Современные операционные системы.
    3. Работать в направлении MVP, дальше уже накручиваете свистелки. В случае ОС, это: загружается, не падает само по себе, приемлемая работа, поддерживает весь необходимый функционал (сеть, ФС, драйверы для датчиков и пр.).


    Картинку с троллейбусом пока не буду прикладывать, но вопрос "Зачем, когда есть Linux kernel который под GPL2?" всё равно задам.
    Ответ написан
    1 комментарий
  • Операционная система для умного дома на C++ c полного нуля. Как?

    devalone
    @devalone
    ̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻̻
    spoiler
    Вы что фейки регаете или какое-то весеннее обострение? Такой же вопрос был N дней назад

    Тут пришла ванга и сказала, что у вас ничего не получится. А по сабжу, бросьте эту глупую идею. Чем вас не устраивает зоопарк готовых решений на базе linux и unix? Сделайте очередной дистрибутив линукса, только напичканный софтом для взаимодействия с микроконтроллерами, датчиками, камерами и всем умным в вашем доме. Т.е. ядро умного дома, а потом уже расширяйте его модульно. Можете сделать распределённую отказоустойчивую систему, в общем простор для фантазии большой и вовсе не нужно писать свою ОС.
    Ответ написан
    1 комментарий
  • Операционная система для умного дома на C++ c полного нуля. Как?

    edinorog
    @edinorog
    Троллей не кормить!
    3e67d2d27e634f5faf8fa95f798d3b7e.jpg
    Ответ написан
    Комментировать
  • Влияет ли на что-нибудь ссылочное поле в структуре C#?

    Нужно быть осторожным при их копировании.

    В твоём случае, в поле myClass хранится ссылка на область памяти в куче. При копировании value type( к чему относится struct) создаётся просто новое значение на стеке.
    var a = 0;
    var b = a; //на стек помещается значение 0. Число есть число, ни на что не ссылается

    В копии структуры ссылочное поле инициализируется копией ссылки(а она ведет к тому же объекту на кучу) которая помещается на стек. Иными словами ты получишь поверхностную или shallow копию. При изменении свойств объекта ссылочного типа в одной структуре ты увидишь те же изменения и в поле копии.
    Ответ написан
    3 комментария
  • Влияет ли на что-нибудь ссылочное поле в структуре C#?

    devspec
    @devspec
    Помогло? Отметь решением
    Делайте, как того требует ситуация. Ограничений никаких нет.
    Возможно, будут некоторые неудобства при сохранении в БД или сериализации, но это опять же зависит от ситуации и есть масса решений, позволяющих от этих неудобств избавляться.
    Ответ написан
    2 комментария
  • Где учить YASM?

    Я бы посоветовал fasm.
    Ответ написан
    Комментировать