2011-01-01 10 views
0

Mein Problem ist, wie C/C++ Zeichenfolge/chractor Array zu einem anderen Zeichenkette enthalten die Unicode (UTF-16) Escape-Sequenz von ursprünglichenWie ein Unicode-Zeichen-Array zurück zu Unicode-Sequenz, die in C++ konvertiert

konvertieren für Beispiel, ich möchte eine Funktion finden F (char * ch) könnte folgende Funktion ausführen.

char a[10] = "\u5f53"; 
printf("a = %s\n",a); 
char b[10]; 
b = F(a); //<- F is the function I wanted 
printf("b = %s\n",b); 

-------- console will show ------- 
a = 張 
b = \u5f53 

Jeder hat eine Vorstellung davon @@? ~

Dank !!

ps: Ich versuchte zu erraten \ u5f35 bedeutet den Wert speichern in a, aber es ist nicht wirklich der Wert von a [0] = -79, a [1] = 105 ... Also ich nicht wissen, wie es zu der Folge von Unicode zu konvertieren zurück .... Bitte geben sie mir eine hane ~:)

Antwort

0

Werfen sie einen Blick auf _mbstowcs_s_l

ich bin nicht sicher, wie genau der Unicode-Punkt muss gefüttert werden zur Funktion ... vielleicht wie Sie haben ("\ uxxxx") oder vielleicht "& #xxxx"

+0

ja @@ Ich habe _mbstowcs_s_l überprüft – eddyxd

3

Hier ist ein Beispiel, das die iconv verwendet Bibliothek.

#include <stdio.h> 
#include <string.h> 
#include <iconv.h> 

void F(char *a, char *b, size_t bufsize) { 
    size_t in_len = strlen(a); 
    size_t out_len = bufsize - 1; 
    iconv_t cd = iconv_open("C99", "UTF-8"); 
    iconv(cd, &a, &in_len, &b, &out_len); 
    *b = 0; 
} 

int main(void) { 
    char a[10] = "\u5f53"; 
    printf("a = %s\n",a); 
    char b[10]; 
    F(a, b, 10); //<- F is the function I wanted 
    printf("b = %s\n",b); 
    return 0; 
} 
Verwandte Themen