|
为什么Unicode的情况下无法输出汉字呢?而在多字节的情况下就可以呢?
结果如下(Unicode并且以该形式输出(wcout << FindFileDate.cFileName << endl;))
----------------------
文件夹:..
文件夹:C++文件夹:文件夹:文件夹:请按任意键继续. . .
----------------------------------------------------------
结果如下(多字节并且该形式输出(cout << FindFileDate.cFileName << endl;或wcout << FindFileDate.cFileName << endl;都一样))
---------------------
文件夹:..
文件夹:C++杂记
文件夹:MSDN
文件夹:VC全套教程CC++
文件夹:工具
请按任意键继续. . .
而且在Unicode的环境中用cout进行输出(cout << FindFileDate.cFileName << endl;)会得到以下结果
----------------------
文件夹:00EFF718
文件夹:00EFF718
文件夹:00EFF718
文件夹:00EFF718
文件夹:00EFF718
以下是代码
---------------------------------------------------------------------
BOOL EnumFiles(LPCTSTR lpszpath, LPCTSTR lpsztype)
{
TCHAR szPath[MAX_PATH] = { 0 };
_stprintf(szPath, _T("%s\\%s"), lpszpath, lpsztype);
WIN32_FIND_DATA FindFileDate = { 0 };
HANDLE hFile = FindFirstFile(szPath, &FindFileDate);
if (hFile == INVALID_HANDLE_VALUE) return FALSE;
BOOL bRet = FALSE;
do
{
bRet = FindNextFile(hFile, &FindFileDate);
if (!bRet)break;
if ((FindFileDate.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) >0 )
{
//文件夹
cout << "文件夹:";
}
else
{
//文件
cout << "文件:";
}
wcout << FindFileDate.cFileName << endl;
} while (bRet);
//for (BOOL bRet = TRUE; bRet;)
//{
// bRet = FindNextFile(hFile, &FindFileDate);
//}
FindClose(hFile);
return TRUE;
}
int _tmain(int argc, PTCHAR argv)
{
BOOL isEnumFiles = EnumFiles(_T("G:\\C++"), _T("*.*"));//在Unicode时如果文件或文件夹中有汉字无法遍历
return 0;
}
wcout 的问题 ,需要加 - setlocale(LC_ALL, "CHS");
复制代码
|
上一篇: 使用MessageBox后内存增加6MB下一篇: 看见一道题,位运算的脑袋有点懵希望能给解答下
|