Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Преобразование типов С\С++ (https://forum.antichat.xyz/showthread.php?t=173535)

Snake Plissken 25.01.2010 10:32

Преобразование типов С\С++
 
Пагни, у меня вопрос. Как можно грамотно преобразовать size_t в TCHAR.

Насколько я понял size_t это алиас для unsigned int?

slesh 25.01.2010 10:52

эм.. TCHAR это в зависимости от настроек алиас на wchar_t (2 байта) или char (1 байт)
а size_t - unsigned int (4 байта) Так что преобразовать полностью не получится. Места не хватит.

Snake Plissken 25.01.2010 10:58

Я подразумеваю что у меня TCHAR'овая строка.

slesh 25.01.2010 11:05

Ну тогда TCHAR* а не TCHAR
Тебе что именно нужно? перевести из числа в строку или просто засунуть в двоичном виде в буфер?

Если просто засунуть в буфер, то
TCHAR * buf; или TCHAR buf[хзхз];
int i;
*(int*)buf = i;

Если преобразовать в стркоу, то
sprintf(buf, "%u", i);

Snake Plissken 25.01.2010 11:14

sprintf ругается

Код:

Error        1  error C2664: 'sprintf' : cannot convert parameter 1 from 'TCHAR *' to 'char *'
swprintf и прочее пробовал - компилер не ругается, а во время работы программа вылетает с немыслимыми ошибками и еретическими речами

Snake Plissken 25.01.2010 12:54

Все, разобрался. С TCHAR * buf не работает, нужно размер указывать обязательно. Хуита

Gar|k 25.01.2010 18:59

Snake Plissken мда... подобные ругательства лечатся явным определением типов...

char buf;
sprintf((TCHAR *)buf,...,...);

НО TCHAR это спецовый макрос (как уже сказал slesh), который в зависимости от настроек проекта ANSI или UNICODE создает определенные строки char или wchar_t
поэтому или пиши все в UNICODE или поставь в настройках проекта ANSI.

AlexTheC0d3r 25.01.2010 21:21

Цитата:

Сообщение от Gar|k
Snake Plissken мда... подобные ругательства лечатся явным определением типов...

char buf;
sprintf((TCHAR *)buf,...,...);

НО TCHAR это спецовый макрос (как уже сказал slesh), который в зависимости от настроек проекта ANSI или UNICODE создает определенные строки char или wchar_t
поэтому или пиши все в UNICODE или поставь в настройках проекта ANSI.

программа написаная с использованием UNICODE, будет работать быстрее чем с ASCII

дело в том, что процессор работает с UNICODE, и если программа написана в с использованием ascii, будет затрачено дополнительное время на преобразование

Ra$cal 25.01.2010 21:51

Цитата:

дело в том, что процессор работает с UNICODE, и если программа написана в с использованием ascii, будет затрачено дополнительное время на преобразование
какой нах процессор с юникодом работает? это апи виндовые юникодные. и именно ось тратит время на преобразование аски в юникод.

ps: последнее время столько лулзов даж баш не доставлял, сколько форум ачата.

AlexTheC0d3r 25.01.2010 22:31

Цитата:

Сообщение от Ra$cal
какой нах процессор с юникодом работает? это апи виндовые юникодные. и именно ось тратит время на преобразование аски в юникод.

ps: последнее время столько лулзов даж баш не доставлял, сколько форум ачата.

Очепятка, извините


Время: 14:05