使用c ++中的unicode char支持从TCHAR转换为char *

时间:2013-03-22 10:54:39

标签: c++ visual-c++

如何使用unicode字符将TCHAR转换为char *。我使用follwong代码

//BROWSE FOLDER - Opens a browse folder dialog.
char* browse_folder(void)
{
char *selected_path = NULL;

TCHAR path[MAX_PATH];
BROWSEINFO bi = { 0 };

bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_USENEWUI;
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);

if (pidl != 0)
{
    // get the name of the folder and put it in path
    SHGetPathFromIDList(pidl, path);

    //Set the current directory to path
    SetCurrentDirectory(path);

    // free memory used
    IMalloc* imalloc = 0;
    if (SUCCEEDED(SHGetMalloc(&imalloc)))
    {
        imalloc->Free(pidl);
        imalloc->Release();
    }
    //selected_path = ;
    USES_CONVERSION;
    selected_path = T2A(path);
}
}

我在visual studio项目设置中启用了unicode。我正在使用此功能浏览文件夹我在路径(TCHAR)中获取精确值时将其转换为char * unicode字符被替换为(????? )符号。

1 个答案:

答案 0 :(得分:0)

由于您的项目支持unicode字符,您应该使用WideCharToMultiByte()转换为char *。尝试使用它。