linux下Linux下char変換wchar_tローカルutf-8符号化およびwcharの入出力を設定

10279 ワード

LInuxでmbstowcs関数を使用すると、charをwchar_に変換できます.t関数の意味:convert a multibyte string to a wide char string説明:The behaviour of mbstowcs depends on the LC_CTYPE category of the current locale戻り値:The mbstowcs()function returns the number of wide characters that make up the converted part of the wide-char-acter string,not including the terminating null wide characters. If an invalid multibyte sequence  was  encountered, (size_t) -1 is returned.
 
 1 #include <string.h>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <wchar.h>
 5 #include <locale.h>
 6 #include <iostream>
 7 using namespace std;
10 //  char     wchar13 // locale:       ,mbstowcs       src     
11 int ToWchar(char* &src, wchar_t* &dest, const char *locale = "zh_CN.utf8"){ 18 if (src == NULL) { 19 dest = NULL; 20 return 0; 21 } 23 // locale 24 setlocale(LC_CTYPE, locale); 26 // 27 int w_size = mbstowcs(NULL, src, 0) + 1; 29 //w_size=0 mbstowcs -1。 ( locale ) 31 if (w_size == 0) { 32 dest = NULL; 33 return -1; 34 } 36 wcout << "w_size" << w_size << endl; 37 dest = new wchar_t[w_size]; 38 if (!dest) return -1; 42 int ret = mbstowcs(dest, src, strlen(src)+1); 43 if (ret <= 0)return -1;46 return 0; 47 } 49 int main(){ 51 char* str = " 123"; 52 wchar_t *w_str ; 53 ToWchar(str,w_str); 54 wcout << w_str[0] << "--" << w_str[1] << "--" << w_str[2]; 55 delete(w_str); 56 return 0; 57 }
 
 
 1 #include <stdio.h>  
 2   
 3 int main(void){  
 5        int       i_number, result;  
 6        float     f_number;  
 7        char      c_number, str[81];  
 8        wchar_t   wc_str, ws_str[81];  
10        printf( "

Enter an int, a float, two chars and two strings
"); 12 result = scanf( "%d %f %c %C %s %S",
&i_number, &f_number, &c_number, &wc_str, str, ws_str ); 13 printf( "
The number of fields input is %d
",
result );
14 printf( "The contents are: %d %f %c %C %s %S
",
i_number, f_number, c_number, wc_str, str, ws_str);
16 wprintf( L"

Enter an int, a float, two chars and two strings
"); 18 result = wscanf( L"%d %f %hc %lc %S %ls",
&i_number, &f_number, &c_number, &wc_str, str, ws_str ); 19 wprintf( L"
The number of fields input is %d
",
result );
20 wprintf( L"The contents are: %d %f %C %c %hs %s
",
i_number, f_number, c_number, wc_str, str, ws_str);
21 }