Форум программистов, компьютерный форум CyberForum.ru

Преобразовать хэш-функцию для работы с wchar_t - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Передать ключ из pair в функцию http://www.cyberforum.ru/cpp-beginners/thread1699446.html
Здравствуйте. Возникла задача передавать первый ключ pair в функцию через цикл.Можно ли так сделать?Если можно,то как должен выглядеть прототип функции?Извиняюсь,если вопрос задал некорректно, с STL только знакомлюсь. vector<pair<int, string>> vec_pair;
C++ Комментарии к программе Здраствуйте. Напишите, пожалуйста, комментарии к строкам, где этих комментариев нет. У меня брат - бездарь. А сам я написать комментарии не могу, так как работаю. Вот сама программа:#include <iostream> // Обеспечивает работу с консольным вводом - выводом #include <fstream> // Обеспечивает работу с файловым вводом - выводом #include <cstdio> #include <string> #include <windows.h> using... http://www.cyberforum.ru/cpp-beginners/thread1699422.html
создать последовательность (список) x1 * xn, x2 * xn, …, xn–1 * xn C++
Здравствуйте, нужна ваша помощь Условие задачи: Даны натуральное число n, действительные числа x1, x2, …, xn (n≥2). Получить последовательность (список) x1 * xn, x2 * xn, …, xn–1 * xn.
C++ Сформировать очередь по файлу символов
Доброго времени суток! Только начали проходить списки. Помогите, пожалуйста, решить задачу: Сформировать очередь (односвязный линейный список) по файлу символов. Промоделировать работу очереди в зависимости от введенных чисел: если вводится положительное число – добавить элемент в конец очереди, если вводится отрицательное число – удалить первый элемент очереди, если вводится нуль – вывести...
C++ Ввод символьной строки. Подскажите что делаю не так? http://www.cyberforum.ru/cpp-beginners/thread1699386.html
Подскажите что делаю не так? char model; хочу что бы модель можно было ввести спробелами. меняем на string mondel; значит нужно поменять способ ввода cin >> x.model; на getline(cin, x.model), ну или оставить char model, а поменять способ ввода, скажеи так cin.getline(model, 15); В любом случаи получаю ошибку: индекатор getline не определен ну или просто подчеркнуто красным. В чем...
C++ Удалить слова, где есть цифры Есть файлик, в нем слова разные из латинского алфавита и цифр что-то вроде: "sdfdsf dsf03sdf ;sl 322eds" Нужно в другой файлик записать те слова, в которых нет цифр. Помогите пожалуйста :) подробнее

Показать сообщение отдельно
Serg_o_Grey
46 / 46 / 19
Регистрация: 29.03.2016
Сообщений: 260
31.03.2016, 12:59     Преобразовать хэш-функцию для работы с wchar_t
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <iostream>
 
using namespace std; 
 
template<typename T>
unsigned int HashLy(T* str)
{
    unsigned int hash=0;
    unsigned char *b = (unsigned char*)&str[0];
    int size = sizeof(str[0]);
    for (int i = 0; str[i]; i++)
    {
        b = (unsigned char*)&str[i];
        for (int j=0; j<size; j++)
        {
            hash=(hash*1664525)+(b[j])+1013904223;
        }
    }
    cout << hash << endl;
    return hash;
}
 
int main(int argc, char** argv) 
{
    const char* str1= "sgdgjfjfjsdndfj";
    HashLy(str1);
    const wchar_t* str2= L"sgdgjfjfjsdndfj";
    HashLy(str2);
    
    return 0;
}
Добавлено через 6 минут
Olej, по поводу wchar_t и uint32 . wchar-t - это двухбайтовая переменная в windows и ничего общего с четырехбайтовым UINT не имеет. (полагаю что uint32 тоже четырехбайтная)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <windows.h>
#include <iostream>
#include <string>
#include <typeinfo>
 
using namespace std;
 
int main(int argc, char** argv)
{
    cout << "ЛОГИЧЕСКИЕ ТИПЫ" << endl;
    cout << "\tbool\t\t\t"<< typeid(bool).name() << endl;
    cout << endl;
    cout << "СИМВОЛЬНЫЕ ТИПЫ" << endl;
    cout << "\t__int8\t\t\t"<< typeid(__int8).name() << endl;
    cout << "\tchar\t\t\t"<< typeid(char).name() << endl;
    cout << "\tTCHAR\t\t\t"<< typeid(TCHAR).name() << endl;
    cout << "\tLPSTR\t\t\t"<< typeid(LPSTR).name() << endl;
    cout << "\tLPTSTR\t\t\t"<< typeid(LPTSTR).name() << endl;
    cout << "\tunsigned char\t\t"<< typeid(unsigned char).name() << endl;
    cout << "\tBYTE\t\t\t"<< typeid(BYTE).name() << endl;
    cout << "\twchar_t\t\t\t"<< typeid(wchar_t).name() << endl;
    cout << "\tLPWSTR\t\t\t"<< typeid(LPWSTR).name() << endl;
    cout << endl;
    cout << "СТРОКОВЫЕ ТИПЫ" << endl;
    cout << "\tstring\t\t\t"<< typeid(string).name() << endl;
    cout << endl;
    cout << "ЦЕЛОЧИСЛЕННЫЕ ТИПЫ" << endl;
    cout << "\t__int16\t\t\t"<< typeid(__int16).name() << endl;
    cout << "\tshort\t\t\t"<< typeid(short).name() << endl;
    cout << "\tunsigned short\t\t"<< typeid(unsigned short).name() << endl;
    cout << "\tWORD\t\t\t"<< typeid(WORD).name() << endl;
    cout << "\t__int32\t\t\t"<< typeid(__int32).name() << endl;
    cout << "\tint\t\t\t"<< typeid(int).name() << endl;
    cout << "\tINT\t\t\t"<< typeid(INT).name() << endl;
    cout << "\tNULL\t\t\t"<< typeid(NULL).name() << endl;
    cout << "\tBOOL\t\t\t"<< typeid(BOOL).name() << endl;
    cout << "\tunsigned int\t\t"<< typeid(unsigned int).name() << endl;
    cout << "\tunsigned int*\t\t"<< typeid(unsigned int*).name() << endl;
    cout << "\tUINT\t\t\t"<< typeid(UINT).name() << endl;
    cout << "\tWPARAM\t\t\t"<< typeid(WPARAM).name() << endl;
    cout << "\tlong\t\t\t"<< typeid(long).name() << endl;
    cout << "\tLONG\t\t\t"<< typeid(LONG).name() << endl;
    cout << "\tLPARAM\t\t\t"<< typeid(LPARAM).name() << endl;
    cout << "\tLRESULT\t\t\t"<< typeid(LRESULT).name() << endl;
    cout << "\t__int64\t\t\t"<< typeid(__int64).name() << endl;
    cout << "\tlong long\t\t"<< typeid(long long).name() << endl;
    cout << "\tunsigned long\t\t"<< typeid(unsigned long).name() << endl;
    cout << "\tDWORD\t\t\t"<< typeid(DWORD).name() << endl;
    cout << "\tunsigned long long\t"<< typeid(unsigned long long).name() << endl;
    cout << endl;
    cout << "ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ" << endl;
    cout << "\tfloat\t\t\t"<< typeid(float).name() << endl;
    cout << "\tdouble\t\t\t"<< typeid(double).name() << endl;
    cout << "\tlong double\t\t"<< typeid(long double).name() << endl;
    cout << endl;
    cout << "ДРУГИЕ" << endl;
    cout << "\tLPCSTR\t\t\t"<< typeid(LPCSTR).name() << endl;
    cout << "\tLPCTSTR\t\t\t"<< typeid(LPCTSTR).name() << endl;
    cout << "\tLPCWSTR\t\t\t"<< typeid(LPCWSTR).name() << endl;
    cout << "\tvoid\t\t\t"<< typeid(void).name() << endl;
    return 0;
}
Программа выводит коды типов данных для windows. Переменные WPARAM, LPARAM и LRESULT в разных версиях windows имеют разный код
 
Текущее время: 19:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru