Std:string в Lpctstr

Тема в разделе "MS Visual C++", создана пользователем DmitryTarasov, 3 апр 2009.

  1. DmitryTarasov

    DmitryTarasov Гость

    Репутация:
    0
    В 6-е работала конструкция:

    LPCTSTR pszName;
    std::string m_strName

    m_strName = pszName;

    Как в 2005 под уникодом выполнить это же, если переобъявлять ничего нельзя?
     
  2. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    Конвертируйте строки при помощи WideCharToMultiByte
     
  3. DmitryTarasov

    DmitryTarasov Гость

    Репутация:
    0
    А примером не поделитесь?
     
  4. DmitryTarasov

    DmitryTarasov Гость

    Репутация:
    0
    Вот такой вариант не работает - выдает билеберду, хоть и компилится:
    Код:
    bool CFlatPopupMenu::AppendItem(const DWORD dwFlags,LPCTSTR pszName,const UINT itemid,const int icon)
    {
    CItem item;
    LPSTR ss;
    LPBOOL b;
    
    item.m_dwFlags=dwFlags;
    
    if (pszName)
    {
    pszName=(LPCTSTR)"52345";
    WideCharToMultiByte(CP_ACP,0,pszName,5,ss,15,"!",b);
    item.m_strName = ss; //std::string	 m_strName;
    
    }
    
    item.m_ItemID=itemid;
    item.m_IconIndex=icon;
    item.m_pPopup=NULL;
    
    m_Items.push_back(item);
    return true;
    }
     
  5. European

    Репутация:
    0
    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    2
    Для приличия в MSDN могли заглянуть.
    Код:
    #include <windows.h>
    #include <winnls.h>
    #include <tchar.h>
    #include <stdio.h>
    
    BOOL Convert(const TCHAR* wszBuffer, CHAR* szBuffer)
    {
    int Length = ::WideCharToMultiByte(CP_UTF8, 0, wszBuffer, -1, NULL, 0, NULL, NULL);
    
    if( szBuffer == NULL ) szBuffer = new char[Length];
    memset(szBuffer, 0, Length);
    
    return ::WideCharToMultiByte(CP_UTF8, 0, wszBuffer, -1, szBuffer, Length, NULL, NULL);
    }
    
    int main()
    {
    TCHAR Input[10] = _T("Input");
    char Output[10];
    
    BOOL Converted = Convert(Input, Output);
    printf(Converted ? Output : "failed");
    }
     
  6. Kmet

    Kmet Well-Known Member
    Java Team

    Репутация:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    1.036
    Симпатии:
    8
    typedef std::basic_string<_TCHAR> _tstring;
    имхо удобнее
     
  7. Kmet

    Kmet Well-Known Member
    Java Team

    Репутация:
    0
    Регистрация:
    25 май 2006
    Сообщения:
    1.036
    Симпатии:
    8
    хотя конечно зависит от юзкейса
     
Загрузка...
Похожие Темы - Std string Lpctstr
  1. mz111
    Ответов:
    4
    Просмотров:
    288
  2. Vadik(R)
    Ответов:
    4
    Просмотров:
    1.528
  3. Stashevckiy
    Ответов:
    6
    Просмотров:
    1.978
  4. Реник
    Ответов:
    2
    Просмотров:
    1.825
  5. wowa
    Ответов:
    1
    Просмотров:
    550

Поделиться этой страницей