wstring 转成 char*


#include  < iostream >
#include 
< fstream >
#include 
< windows.h >
using   namespace  std;

int  main()
{
    FILE
*  fp ;
    WCHAR wchar[
5 =  L " 相等相等 " ;         // 定义一个宽字节的变量,初始为"相等"
    fp  =  fopen( " 1.txt " " w+ " );         // 打开文件称奥做
    fwprintf(fp, L " %s\n " , wchar);     // 输出到文件
    fclose(fp);                         // 关闭文件
    WCHAR wc2[ 5 ];                     // 定义第二个宽字节变量
    
    
// wc开始的有很多宽字节的操作。都和str相对应。
    wcscpy(wc2, wchar);                 // 复制。
     int  n  =  wcscmp(wc2, wchar);         // 比较
     if  (n  ==   0 )
    {
        wprintf(L
" 相等\n " );             // 这里是否注意到没有wprintf有问题的。
    }

    
char  str[ 10 ];                     // 定义char字符。
    n  =  wcstombs(str, wc2,  9 );         // 宽字节转换为muiltychar
    printf( " %s\n " , str);             // 输出结果

    
for  ( int  i  =   0 ; i  <   5 ++ i)
    {
        wc2[i] 
=  L ' 1 '   +  i;
    }
    wc2[
4 =   0 ;

    n 
=  wcstombs(str, wc2,  9 );         // 宽字节转换为muiltychar
    printf( " %s\n " , str);             // 输出结果
    
// 另外的方式转换
    n  =  WideCharToMultiByte(CP_ACP, NULL, wchar, wcslen(wchar)  +   1 , str,  10 0 0 );
    printf(
" %s\n " , str);
    
char  str2[ 10 =   " 加一 " ;
    WCHAR wc3[
10 ];
    n 
=  MultiByteToWideChar(CP_ACP, NULL, str2, strlen(str2)  +   1 , wc3,  10 );     // char到宽字节。

    system(
" pause " );
    
return   0 ;
}

你可能感兴趣的:(Knowledge)