Std:string в Lpctstr

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

  1. DmitryTarasov

    DmitryTarasov Гость

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

    LPCTSTR pszName;
    std::string m_strName

    m_strName = pszName;

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

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

    DmitryTarasov Гость

    А примером не поделитесь?
     
  4. DmitryTarasov

    DmitryTarasov Гость

    Вот такой вариант не работает - выдает билеберду, хоть и компилится:
    Код (Text):
    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

    Регистрация:
    4 сен 2006
    Сообщения:
    2.580
    Симпатии:
    0
    Для приличия в MSDN могли заглянуть.
    Код (Text):
    #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

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

    Kmet Well-Known Member

    Регистрация:
    25 май 2006
    Сообщения:
    1.017
    Симпатии:
    1
    хотя конечно зависит от юзкейса
     
Загрузка...
Похожие Темы - Std string Lpctstr
  1. Vadik(R)
    Ответов:
    4
    Просмотров:
    1.426
  2. Stashevckiy
    Ответов:
    6
    Просмотров:
    1.886
  3. Реник
    Ответов:
    2
    Просмотров:
    1.784
  4. wowa
    Ответов:
    1
    Просмотров:
    454
  5. AndreiGS
    Ответов:
    6
    Просмотров:
    1.189

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