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

Unicode ОШИБКА - C++

Восстановить пароль Регистрация
 
x-954377
 Аватар для x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
03.07.2010, 10:53     Unicode ОШИБКА #1
Всем привет у меня такая проблема с UNICODE вод код
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
#define UNICODE
#define _UNICODE
#include <Windows.h>
#pragma comment(linker,"/Entry:WinMain")
 
LPWSTR p(LPWSTR s)
{
    const int len = lstrlen(s);
    wchar_t *tmp = (wchar_t*)s;
    wchar_t *key = new wchar_t[len]; 
    wchar_t *b   = new wchar_t[len];
 
    for(int i=0; i<len; i++)key[i]= key[i]+(wchar_t)77;
    for(int i=0; i<len; i++)b[i]= tmp[i]^key[i];
 
    return b;
}
 
int _stdcall WinMain(HINSTANCE,HINSTANCE,LPSTR,int)
{
    wchar_t *e = p(L"Hello");
    wchar_t *d = p(e);
 
    MessageBoxW(0,e,L"",0);
    MessageBoxW(0,d,L"",0);
 
    return 0;
}
Всё работает, но только выводит как в сообщение какой-то мусор, в чём моя проблема.

За рание спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2010, 10:53     Unicode ОШИБКА
Посмотрите здесь:

C++ Unicode символы
C++ ANSI и UNICODE
C++ Преобразование в Unicode
C++ Чтение Unicode
C++ Unicode символы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
03.07.2010, 18:39     Unicode ОШИБКА #2
x-954377, это потому что функция p генерирует этот самый мусор) думаю, в 23 строке имелось в виду
C++
1
wchar_t * e = L"Hello";
x-954377
 Аватар для x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
03.07.2010, 18:55  [ТС]     Unicode ОШИБКА #3
Да она генерирует мусор вот и спросил как мне от это мусора избавится что не так в этой функции он должна сперва закодировать строку а потом раскодировать обратно. ну только там куча ненужного что при кодировки и что при раскодировки
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
03.07.2010, 18:56     Unicode ОШИБКА #4
x-954377, С ключом,инициализированном мусором генерировать не-мусор не получится)
x-954377
 Аватар для x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
03.07.2010, 19:06  [ТС]     Unicode ОШИБКА #5
Так одратно он дол жен нормально а то мусор какой то лезит.
XuTPbIu_MuHTAu
Эксперт C++
 Аватар для XuTPbIu_MuHTAu
2219 / 734 / 10
Регистрация: 27.05.2008
Сообщений: 1,507
03.07.2010, 19:07     Unicode ОШИБКА #6
Не должен. Он с другим мусорным ключом ...обратно) У тебя при каждом новом вызове ф-ии p память под ключ выделяется заново
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2010, 19:25     Unicode ОШИБКА
Еще ссылки по теме:

ANSI to Unicode C++
C++ C++ и Unicode
C++ Unicode в c++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
x-954377
 Аватар для x-954377
3 / 3 / 0
Регистрация: 20.06.2010
Сообщений: 42
03.07.2010, 19:25  [ТС]     Unicode ОШИБКА #7
Всё спсибо сам разобрался работает просто функцию нужно было до ума довести!!!! )))))
C++
1
2
3
4
5
6
7
8
9
10
11
12
LPWSTR WINAPI e_d_code(LPWSTR str)
{
    const int len =lstrlen(str);
    wchar_t *key= new wchar_t[len];
    wchar_t *buf= new wchar_t[len];
    
    lstrcpy(buf,str);
    for(int i=0; i<len; i++)key[i]=key[i]+(wchar_t)0x77;
    for(int i=0; i<len; i++)buf[i]=buf[i]^key[i];
 
    return buf;
}
З.Ы. Дума что тема закрыта
Yandex
Объявления
03.07.2010, 19:25     Unicode ОШИБКА
Ответ Создать тему
Опции темы

Текущее время: 17:00. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru