VS: [项目属性]->[配置属性]->[常规]->[字符集]
在该属性中选择"使用多字节字符集"或者"使用Unicode字符集" 本代码段均可处理
#include#ifdef _WIN32 #include std::string WcharToChar(const wchar_t* wp, size_t encode) { std::string str; int len = WideCharToMultiByte((UINT)encode, 0, wp, (int)wcslen(wp), NULL, 0, NULL, NULL); char *m_char = new char[len + 1]; WideCharToMultiByte((UINT)encode, 0, wp, (int)wcslen(wp), m_char, len, NULL, NULL); m_char[len] = ' '; str = m_char; delete m_char; return str; } std::wstring CharToWchar(const char* c, size_t encode) { std::wstring str; int len = MultiByteToWideChar((UINT)encode, 0, c, (int)strlen(c), NULL, 0); wchar_t* m_wchar = new wchar_t[len + 1]; MultiByteToWideChar((UINT)encode, 0, c, (int)strlen(c), m_wchar, len); m_wchar[len] = ' '; str = m_wchar; delete m_wchar; return str; } #endif // _WIN32 // 取消隐藏文件 void show_file(const std::string& szFile) { #ifdef _WIN32 #ifdef UNICODE std::wstring wstr = CharToWchar(szFile.c_str(), CP_ACP); ::SetFileAttributes(wstr.c_str(), FILE_ATTRIBUTE_NORMAL); #else SetFileAttributes(szFile.c_str(),FILE_ATTRIBUTE_NORMAL); #endif // !UNICODE #endif // _WIN32 } // 设置文件隐藏 void hide_file(const std::string& szFile) { #ifdef _WIN32 #ifdef UNICODE std::wstring wstr = CharToWchar(szFile.c_str(), CP_ACP); ::SetFileAttributes(wstr.c_str(), FILE_ATTRIBUTE_HIDDEN); #else ::SetFileAttributes(szFile.c_str(), FILE_ATTRIBUTE_HIDDEN); #endif // !UNICODE #endif // _WIN32 } int main(int argc, char *argv[]) { hide_file("E:\test.dat"); show_file("E:\test.dat"); return 0; }



