首页 > 代码库 > windows下wchar_t* 转char*
windows下wchar_t* 转char*
这个在windows下很常见,常用,留个档。
一般用这个函数:
size_t wcstombs( char *mbstr, const wchar_t *wcstr, size_t count );
mbstr
The address of a sequence of multibyte characters.
wcstr
The address of a sequence of wide characters.
count
The maximum number of bytes that can be stored in the multibyte output string.
locale
The locale to use.
下面是我写的一个测试,是根据项目改过来的:
1 #include <windows.h> 2 #include <string.h> 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <boost/filesystem.hpp> 6 7 namespace bfs = boost::filesystem; 8 9 10 bool get_path(char *file_name,size_t size){11 12 13 char ownPth[MAX_PATH];14 15 HMODULE hModule = GetModuleHandle(NULL); // Will contain exe path,When passing NULL to GetModuleHandle, it returns handle of exe itself16 if (hModule != NULL)17 {18 GetModuleFileNameA(hModule,ownPth, MAX_PATH); // 19 }20 else21 ownPth[0]=0;22 23 bfs::path iic_file(ownPth);24 iic_file = iic_file.parent_path() / "dlp_usb.iic" ; //For releaseing25 26 if( !bfs::is_regular_file(iic_file))27 {28 printf("\r\nError,open 68013 iic file fail\r\n");29 return false ;30 }31 32 33 wcstombs(file_name,iic_file.c_str(),size);34 35 //memcpy(file_name,iic_file.c_str(),byte_count);36 37 return true;38 39 }40 41 int main(){42 43 char iic_file[512];44 45 if(get_path( iic_file,512)){46 47 printf("TRUE\n");48 }49 50 return 0;51 }
references:
http://msdn.microsoft.com/en-us/library/5d7tc9zw.aspx
http://blog.163.com/tianshi_17th/blog/static/4856418920085209414977/
windows下wchar_t* 转char*
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。