Leatington
Известный
- 258
- 73
Конвертировать каждую ячейку в wstringКак в std::sort передать массив wchar_t?
std::begin, std::endКак в std::sort передать массив wchar_t?
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++: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);
Почему массив сортируется неправильно?
#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;
}
Мне нужно сортировать массив wchar_t, а не строку, а begin и end с ними не работает.Потому что это бред. Тебе писали выше, использовать 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; }
str.data() и тебе выкакает массивМне нужно сортировать массив wchar_t, а не строку, а begin и end с ними не работает.
Как в std::sort передать массив wchar_t?
ПопробуйМне нужно сортировать массив wchar_t, а не строку, а begin и end с ними не работает.
#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;
}
Мне нужно сортировать массив wchar_t, а не строку, а begin и end с ними не работает.
#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;
}
use this function to get color from ini and pass it to ImGui::ColorEditI 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
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;
}
Как сделать проверку на то заспавнился ли игрок без задействования памяти SAMP?
CPed* pPed = FindPlayerPed();
if (pPed && pPed->IsAlive())
{
//...
}
Пробывал делать проверку через IsAlive, но он возвращает true даже во время подключения к серверу. Мне бы что-то типо того что камера прикреплена к педуplugin sdk:CPed* pPed = FindPlayerPed(); if (pPed && pPed->IsAlive()) { //... }