C++常用的数据转换(持续更新)
CString to char*
char * CStringtochar(CString str
)
{
char *ptr
;
#ifdef _UNICODE
LONG len
;
len
= WideCharToMultiByte(CP_ACP
, 0, str
, -1, NULL, 0, NULL, NULL);
ptr
= new char[len
+ 1]; memset(ptr
, 0, len
+ 1);
WideCharToMultiByte(CP_ACP
, 0, str
, -1, ptr
, len
+ 1, NULL, NULL);
#else
ptr
= new char[str
.GetAllocLength() + 1];
sprintf(ptr
, _T("%s"), str
);
#endif
return ptr
;
}
utf8ToUnicod
public static String
utf8ToUnicode(StringBuffer inStr
) {
char[] myBuffer
= inStr
.toString().toCharArray();
StringBuffer sb
= new StringBuffer();
for (int i
= 0; i
< inStr
.length(); i
++) {
UnicodeBlock ub
= UnicodeBlock
.of(myBuffer
[i
]);
if(ub
== UnicodeBlock
.BASIC_LATIN
){
sb
.append(myBuffer
[i
]);
}else if(ub
== UnicodeBlock
.HALFWIDTH_AND_FULLWIDTH_FORMS
){
int j
= (int) myBuffer
[i
] - 65248;
sb
.append((char)j
);
}else{
short s
= (short) myBuffer
[i
];
String hexS
= Integer
.toHexString(s
);
String unicode
= "\\u"+hexS
;
sb
.append(unicode
.toLowerCase());
}
}
return sb
.toString();
}
unicodeToUtf8
public static String
unicodeToUtf8(String theString
) {
char aChar
;
int len
= theString
.length();
StringBuffer outBuffer
= new StringBuffer(len
);
for (int x
= 0; x
< len
;) {
aChar
= theString
.charAt(x
++);
if (aChar
== '\\') {
aChar
= theString
.charAt(x
++);
if (aChar
== 'u') {
int value
= 0;
for (int i
= 0; i
< 4; i
++) {
aChar
= theString
.charAt(x
++);
switch (aChar
) {
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
value
= (value
<< 4) + aChar
- '0';
break;
case 'a':
case 'b':
case 'c':
case 'd':
case 'e':
case 'f':
value
= (value
<< 4) + 10 + aChar
- 'a';
break;
case 'A':
case 'B':
case 'C':
case 'D':
case 'E':
case 'F':
value
= (value
<< 4) + 10 + aChar
- 'A';
break;
default:
throw new IllegalArgumentException(
"Malformed \\uxxxx encoding.");
}
}
outBuffer
.append((char) value
);
} else {
if (aChar
== 't')
aChar
= '\t';
else if (aChar
== 'r')
aChar
= '\r';
else if (aChar
== 'n')
aChar
= '\n';
else if (aChar
== 'f')
aChar
= '\f';
outBuffer
.append(aChar
);
}
} else
outBuffer
.append(aChar
);
}
return outBuffer
.toString();
}
转载请注明原文地址:https://tech.qufami.com/read-16855.html