Ответы пользователя по тегу C++
  • Удалить Emojii символ из строки в Qt?

    BadCats
    @BadCats Автор вопроса
    Получилось удалить символы. Суть в том, что Qt почему-то не воспринимает симол, если пытаться удалить или заменить его, обращаясь, как
    U0001F9B7
    , даже, если символ там точно присутствует и выводится в таком формате в консоль, через qDebug().

    Для удаления симолов эмодзи, необходимо воспользоваться статическим методом QString::fromWCharArray() - куда передать сурогатные пары

    (как раз те, ккоторые видны в отладчике как 55358(0xd83e) и 56759 (0xdbd7) - в моем случае, для данного эмодзи).

    Метод будет выглядеть так:

    QString::fromWCharArray(L"\xD83E\xDDB7");

    и, он как это не странно вернет ту же строку - U0001F9B7, но вот ее, почему-то, Qt уже прекрасно удаляет:

    QString tmpStr=QString::fromWCharArray(L"\xD83E\xDDB7");
    myStr.remove(tmpStr);


    В поисках ответа мне помогли:

    Эта тема на английском SO:
    https://stackoverflow.com/questions/30247319/how-d...
    (Не уверен, можно ли на тостере оставлять ссылки на другие форумы, поэтому, вот цитата ответа:


    You already know the answer - specify it as a proper UTF-16 string.

    Unicode codepoints above U+FFFF are represented in UTF-16 using a surrogate pair, which is two 16bit codeunits acting together to represent the full Unicode codepoint value. For U+1F50E, the surrogate pair is U+D83D U+DD0E.

    In Qt, a UTF-16 codeunit is represented as a QChar, so you need two QChar values, eg:

    edit.setText(QString::fromWCharArray(L"\xD83D\xDD0E"));


    or:

    edit.setText(QString::fromStdWString(L"\xD83D\xDD0E"));


    Assuming a platform where sizeof(wchar_t) is 2 and not 4.

    In your example, you tried using QString::fromUtf8(), but you gave it an invalid UTF-8 string. For U+1F50E, it should have looked like this instead:

    edit.setText(QString::fromUtf8("\xF0\x9F\x94\x8E"));


    You can also use QString::fromUcs4() instead:

    uint cp = 0x1F50E; edit.setText(QString::fromUcs4(&cp, 1));



    )
    Данный калькулятор для вычисления юникода по суррогатным парам и наоборот:
    www.russellcottrell.com/greek/utilities/SurrogateP...
    Ответ написан
    Комментировать
  • Ошибка хранения адреса в указателе?

    BadCats
    @BadCats Автор вопроса
    nextWorldPart[0]=&Europe_CountryCount; Не является ни объявлением, ни определением. Это вызов оператора, который может быть выполнен только в функции.

    - answer by AR Hovsepyan
    https://ru.stackoverflow.com/q/1100821/203448
    Ответ написан
    Комментировать
  • Какой онлайн курс С++ лучше всего выбрать?

    BadCats
    @BadCats
    Вот, пожалуйста:
    https://stepik.org/course/7
    https://stepik.org/course/3206
    - на мой скромный взгляд - одни из лучших курсов по c++. Конечно есть свои недочеты и огрехи, но в целом - дает очень хорошую базу.
    Там и задачи есть.
    Ответ написан
    Комментировать
  • Учебники или видео курсы по C# для начинающего изучать этот язык программирования?

    BadCats
    @BadCats
    Лично Я самостоятельно изучаю c# уже долгое время и единственные годные курсы которые я пока что нашел это c# starter и c# essential в исполнении Александра Шевчука. Минусы: Курсы платные и там только подписка - т.е варианта "один раз купил и пользуйся" - нет, но на торрентах эти курсы лежат и в 720p. Если есть базовые знания - такие как циклы,массивы и т.п то c# starter можно опустить, и начать сразу с c# essential - т.к в нем рассматриваются и основы ООП и "чистый" C#, НО я советую проходить оба курса. Также у них есть c# proffesional но его я пока что не смотрел. И еще, у них есть обновленные версии этих курсов, но ОБЯЗАТЕЛЬНО смотрите именно в исполнении Шевчука. И не ведитесь на их YouTube канал - там демо видео по 15-20 минут, а реальные уроки идут по часу-полтора
    P.S.
    https://itvdn.com/ru/video/csharp-starter
    https://itvdn.com/ru/video/csharp-essential
    Ответ написан
    Комментировать