Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / LPWSTR to LPSTR / 6 сообщений из 6, страница 1 из 1
25.04.2006, 09:54
    #33687799
TaReN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LPWSTR to LPSTR
Подскажите как можно перевести LPWSTR в LPSTR
Код: plaintext
1.
2.
3.
4.
LPSTR str;
LPWSTR wstr="123456789";
str = CW2A(wstr);
wstr = CA2W(str);
MessageBox(NULL,PathFilePr,TEXT(""), 0 );
Такая манипуляция выводит пустую строку.
Заранее благодарен за ответ
-=<TaReN>=-
...
Рейтинг: 0 / 0
25.04.2006, 10:17
    #33687864
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LPWSTR to LPSTR
Может надо:
LPWSTR wstr= L "123456789";
Есть еще API-функция WideCharToMiltiByte...
...
Рейтинг: 0 / 0
25.04.2006, 10:24
    #33687886
ZrenBy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LPWSTR to LPSTR
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  char   str[ 1024 ];
  LPWSTR wstr = L"ЙЦУКЕН";

  WideCharToMultiByte(
     CP_ACP
   ,  0 
   , wstr
   , - 1 
   , str
   ,  1023 
   ,  0 
   ,  0 
  );

  MessageBoxA( 0 ,str,"", 0 );
...
Рейтинг: 0 / 0
25.04.2006, 10:39
    #33687937
TaReN
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LPWSTR to LPSTR
Пасиб все работет
Только вопросик маленький:
Почему объявляешь строку длиной 1024
Код: plaintext
char   str[ 1024 ];
а при конвертации используешь 1023
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
WideCharToMultiByte(
     CP_ACP
   ,  0 
   , wstr
   , - 1 
   , str
   ,  1023 
   ,  0 
   ,  0 
  );
???
-=<TaReN>=-
...
Рейтинг: 0 / 0
25.04.2006, 10:46
    #33687961
Alex_VC
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LPWSTR to LPSTR
для строкового терминатора '\0'
...
Рейтинг: 0 / 0
25.04.2006, 10:59
    #33688016
_Балтика
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
LPWSTR to LPSTR
Поскольку шестой параметр в этой ф-ции:
MSDN
cbMultiByte
[in] Specifies the size, in bytes, of the buffer pointed to by the lpMultiByteStr parameter. If this value is zero, the function returns the number of bytes required for the buffer. (In this case, the lpMultiByteStr buffer is not used.)

, то все-таки правильнее будет 1024 .
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / LPWSTR to LPSTR / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]