Другое С/С++ Вопрос - Ответ

0x73616D

Активный
140
43
I need some function to take the color from the .INI itself that does not cause me problems, is for ImGui::ColorEdit, since the function that I use takes them like this:
image.png
 

Leatington

Фанат Рейзора
264
75
C++:
bool srt(const wchar_t &value1, const wchar_t & value2)
{
    return (_wcsicmp((wchar_t*)value1, (wchar_t*)value2) > 0);
}
sort(*russian_names, *russian_names, srt);

Почему массив сортируется неправильно?
 

AdCKuY_DpO4uLa

Адский дрочер
Друг
351
765
C++:
bool srt(const wchar_t &value1, const wchar_t & value2)
{
    return (_wcsicmp((wchar_t*)value1, (wchar_t*)value2) > 0);
}
sort(*russian_names, *russian_names, srt);

Почему массив сортируется неправильно?
Потому что это бред. Тебе писали выше, использовать std::begin для получения "начала" Массива и std::end для получения "конца" Массива, ты же тупо разыменовал указатель и передал его по ссылке. Что? Зачем? Для чего? Мало того, ты потом пытаешься это снова привести к указатель. Складывается такое впечатление, что ты и доки к _wcsicmp не читал. Это функция сравнения двух строк, без учёта регистра, которая вернёт > 0, если str1 длинее str2, каким образом там должна быть сортировка, мне не известно, судя по твоему коду, твоя функция будет всегда возвращать что-то одно, причём не понятно в каких случаях что, вероятнее всего, это вообще UB(могу ошибаться)

C++:
#include <iostream>
#include <string>
#include <algorithm>

int main()
{
    std::wstring str{ L"awdawdawdfawawdjnsfuhjksd" };
    std::wcout << str << std::endl;
    std::sort(str.begin(), str.end());
    std::wcout << str << std::endl;

    return 0;
}
image.png
 
Последнее редактирование:
  • Клоун
Реакции: Fott

Leatington

Фанат Рейзора
264
75
Потому что это бред. Тебе писали выше, использовать std::begin для получения "начала" Массива и std::end для получения "конца" Массива, ты же тупо разыменовал указатель и передал его по ссылке. Что? Зачем? Для чего? Мало того, ты потом пытаешься это снова привести к указатель. Складывается такое впечатление, что ты и доки к _wcsicmp не читал. Это функция сравнения двух строк, без учёта регистра, которая вернёт > 0, если str1 длинее str2, каким образом там должна быть сортировка, мне не известно, судя по твоему коду, твоя функция будет всегда возвращать что-то одно, причём не понятно в каких случаях что, вероятнее всего, это вообще UB(могу ошибаться)

C++:
#include <iostream>
#include <string>
#include <algorithm>

int main()
{
    std::wstring str{ L"awdawdawdfawawdjnsfuhjksd" };
    std::wcout << str << std::endl;
    std::sort(str.begin(), str.end());
    std::wcout << str << std::endl;

    return 0;
}
image.png
Мне нужно сортировать массив wchar_t, а не строку, а begin и end с ними не работает.
 

EclipsedFlow

Известный
Проверенный
1,046
479
Как в std::sort передать массив wchar_t?

Мне нужно сортировать массив wchar_t, а не строку, а begin и end с ними не работает.
Попробуй
C++:
#include <algorithm>
#include <iostream>
#include <cstring>

bool compare(const wchar_t* a, const wchar_t* b)
{
    return (_wcsicmp(a, b) > 0);
}

int main()
{
    const wchar_t* arr[] = {L"abcd", L"efg", L"hi", L"jklmno"};
    const size_t arr_size = sizeof(arr) / sizeof(arr[0]);

    std::sort(arr, arr + arr_size, compare);

    for (size_t i = 0; i < arr_size; i++)
    {
        std::wcout << arr[i] << std::endl;
    }

    return 0;
}
 
  • Влюблен
Реакции: Leatington

AdCKuY_DpO4uLa

Адский дрочер
Друг
351
765
Мне нужно сортировать массив wchar_t, а не строку, а begin и end с ними не работает.
C++:
#include <iostream>
#include <algorithm>

int main()
{
    wchar_t arr[] = { 0x100, 0x200, 0x300, 0x105, 0x90, 0x700 };
    
    for (auto& it : arr)
        std::cout << "0x" << std::hex << it << ' ';
    std::cout << std::endl;
    
    std::sort(std::begin(arr), std::end(arr));
    
    for (auto& it : arr)
        std::cout << "0x" << std::hex << it << ' ';
    std::cout << std::endl;

    return 0;
}
image.png
 

Digger Man52

52NGG
Проверенный
1,110
985
I need some function to take the color from the .INI itself that does not cause me problems, is for ImGui::ColorEdit, since the function that I use takes them like this:
Посмотреть вложение 191848
use this function to get color from ini and pass it to ImGui::ColorEdit
C++:
ImVec4 getColorFromINI(const char* key, const char* fileName)
{
    ImVec4 color;
    char buffer[256] = {};

    GetPrivateProfileString("color", key, "", buffer, sizeof(buffer), fileName);
    sscanf(buffer, "R %f G %f B %f", &color.x, &color.y, &color.z);
    color.w = 1.0f; // Alpha

    return color;
}
 

ARMOR

Waitin' on another black summer to end
Модератор
5,046
7,236
Как сделать проверку на то заспавнился ли игрок без задействования памяти SAMP?
 

ARMOR

Waitin' on another black summer to end
Модератор
5,046
7,236
plugin sdk:
CPed* pPed = FindPlayerPed();
if (pPed && pPed->IsAlive())
{
    //...
}
Пробывал делать проверку через IsAlive, но он возвращает true даже во время подключения к серверу. Мне бы что-то типо того что камера прикреплена к педу