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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
linkoln78
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 102
#1

Конвертация Cstring в wchar_t* - C++

15.10.2013, 11:42. Просмотров 999. Ответов 11
Метки нет (Все метки)

Есть функция, которая возвращает тип CString и нужно этот CString использовать в функции wcscpy. Как правильно сделать преобразования?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.10.2013, 11:42     Конвертация Cstring в wchar_t*
Посмотрите здесь:

Конвертация в wchar_t - C++
Прочитал что если перед строковым литералом написать L то он будет приведён к типу wchar_t, но почему-то на выходе у меня получается адрес,...

Конвертация Float to wchar_t - C++
Здравствуйте, уважаемые форумчане. Помогите, мне, пожалуйста. Как правильно перевести float в wchar_t? Все что я нашёл в интернете - не...

Конвертация wchar_t в число целого типа. Обработка исключения - C++
Конвертирую считываемые данные с Экселя в число типа int,для дальнейшей проверки вхождения в массив. buff содержит значение 12345qwe ...

CP886 в Multibyte (wchar_t) и BYTE в Multibyte (wchar_t) - C++
Помогите разобраться с кодировками. Получаю из базы данных значения и при выводи их в EditControl все отлично, но если выводить данные в...

класс CString - C++
расскажите пожалуйста, где найти информацию по этому классу?как его подключать, какие функции в нем есть? какую литературу прочесть чтобы в...

C++ <cstring> strlen() - C++
Народ, может ли функция strlen() обрабатывать тип не const char, а char ? компилятор ошибку выдаёт str.insert(Position_Begin(c),...

fgets и CString - C++
Здравствуйте, У меня возник вопрос, проконсультируйте, пожалуйста, что можно сделать в этой ситуации? Нужно прочитать строчку...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
15.10.2013, 11:48     Конвертация Cstring в wchar_t* #2
1. У тебя проект-то какой - уникодный или нет?
2. Приведи пример кода, будет легче дать правильный совет.
linkoln78
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 102
15.10.2013, 12:03  [ТС]     Конвертация Cstring в wchar_t* #3
CheshireCat, Я записал все строки в StringTable. Например далее приведенный IDSS_DEFINITION01 это строка "Показатель". Что-бы загрузить этот ID, я написал класс StrUtils, в котором реализовал вот такую функцию
C++
1
2
3
4
5
6
7
static CString LoadStringById(int sID)
{
    CString StrTbl;
    ::LoadString(NULL, sID, StrTbl.GetBuffer(100), 100);
    StrTbl.ReleaseBuffer();
    return StrTbl;
};
Далее в своем коде вызываю метод данного класса и вот тут появились проблемы с преобразованиями
C++
1
wcscpy(str,StrUtils::LoadStringById(IDSS_DEFINITION01));
MrGluck
Модератор
Эксперт CЭксперт С++
6992 / 4163 / 594
Регистрация: 29.11.2010
Сообщений: 11,045
15.10.2013, 12:21     Конвертация Cstring в wchar_t* #4
А если прогнать в char* и обратно?
У CString вроде был аналог string::data()
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
15.10.2013, 12:45     Конвертация Cstring в wchar_t* #5
Так вот вопрос-то: у тебя проект уникодный или нет? Потому что если уникодный - то и делать ничего не надо, у класса CString есть operator LPCTSTR(), возвращающий const TCHAR*, который раскроется в const wchar_t*. А если проект не уникодный, то у меня сразу же возникает вопрос: почему применяется функция wcscpy, а не strcpy ? Какие к тому основания?
linkoln78
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 102
15.10.2013, 13:11  [ТС]     Конвертация Cstring в wchar_t* #6
MrGluck, а можно элементарный пример.
CheshireCat, проект уникодный, но с оператором LPCTSTR() почему-то не работает
SatanaXIII
15.10.2013, 13:19
  #7

Не по теме:

Цитата Сообщение от CheshireCat Посмотреть сообщение
есть operator LPCTSTR()
Это ж макрос.

CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
15.10.2013, 14:26     Конвертация Cstring в wchar_t* #8
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Это ж макрос.
Гмм. Заглянул в исходники: они утверждают, что это именно оператор.....

linkoln78, а приведи-ка минимальный код, воспроизводящий проблему.
linkoln78
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 102
15.10.2013, 14:35  [ТС]     Конвертация Cstring в wchar_t* #9
CheshireCat, метод LoadStringById описывал выше. После wcscpy(..) возникает ошибка. Проект использует многобайтную кодировку. не уникодную, извиняюсь
Error 9 error C2664: 'wcscpy' : cannot convert parameter 2 from 'CString' to 'const wchar_t *'
C++
1
2
 WCHAR str[100];    
    wcscpy(str, StrUtils::LoadStringById(IDSS_DEFINITION01));
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
15.10.2013, 14:44     Конвертация Cstring в wchar_t* #10
Цитата Сообщение от linkoln78 Посмотреть сообщение
Проект использует многобайтную кодировку. не уникодную, извиняюсь
О! Вот в этом и может быть дело....
Попробуй порыться в MSDN, начиная вот отсюда: http://msdn.microsoft.com/ru-ru/libr...=vs.90%29.aspx
linkoln78
1 / 1 / 0
Регистрация: 21.05.2012
Сообщений: 102
15.10.2013, 15:07  [ТС]     Конвертация Cstring в wchar_t* #11
CheshireCat, Все равно не понимаю, создал новый проект в уникоде, вот такой код отлично работает
C++
1
2
3
4
5
6
CString str;
    ::LoadString(NULL, 102, str.GetBuffer(100), 100);
    str.ReleaseBuffer();
    WCHAR szStr[100];
    wcscpy_s(szStr,str);
    MessageBox(szStr,_T("Convert"),MB_OK);
Как сделать такие же преобразования в мульти байт не могу понять
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2013, 15:28     Конвертация Cstring в wchar_t*
Еще ссылки по теме:

Создать класс CString - C++
Помогите. Кто чем может=) Создать класс CString, хранящий массив символов и его размер. Реализация методов сложения и вычитания...

Преобразование int в CString ? - C++
Подскажите как преобразовать? itoa преобразовует в *char, а хотелось бы сразу в CString...

Приведение типов. CString. - C++
помогите как собрать до кучи CString c_bank1,c_bank2,c_bank3; std::stringstream ss(buffer); std::vector&lt;std::string&gt;...

Преобразование CString в CEdit - C++
Помогите. Как мне преобразовать переменную CString в CEdit с условием, что нет элемента управления CEdit. Просто нужно строку CString...

Wchar_t - C++
подключаюсь к серверу. Присваиваю переменной типа string имя, const char* charName = _Name.c_str(); затем в цикле передаю серверу имя...


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

Или воспользуйтесь поиском по форуму:
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
15.10.2013, 15:28     Конвертация Cstring в wchar_t* #12
А MSDN и гугл на что? Используй функции MultiByteToWideChar и WideCharToMultiByte. Примеры кода тоже есть, можно начать отсюда: http://social.msdn.microsoft.com/For...orum=vcgeneral
Yandex
Объявления
15.10.2013, 15:28     Конвертация Cstring в wchar_t*
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru