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 itself

16 if (hModule != NULL)

17 {

18 GetModuleFileNameA(hModule,ownPth, MAX_PATH);    // 

19 }

20 else

21 ownPth[0]=0;

22 

23 bfs::path iic_file(ownPth);

24 iic_file = iic_file.parent_path() / "dlp_usb.iic" ; //For releaseing

25 

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)