mirror of
https://gitee.com/zlgopen/awtk.git
synced 2024-11-30 02:58:26 +08:00
add str_from_wstr_with_len
This commit is contained in:
parent
689d7a27a5
commit
b68f7667a0
@ -261,7 +261,7 @@ ret_t str_from_value(str_t* str, const value_t* v) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ret_t str_from_wstr(str_t* str, const wchar_t* wstr) {
|
ret_t str_from_wstr_with_len(str_t* str, const wchar_t* wstr, uint32_t len) {
|
||||||
return_value_if_fail(str != NULL, RET_BAD_PARAMS);
|
return_value_if_fail(str != NULL, RET_BAD_PARAMS);
|
||||||
|
|
||||||
str->size = 0;
|
str->size = 0;
|
||||||
@ -269,12 +269,12 @@ ret_t str_from_wstr(str_t* str, const wchar_t* wstr) {
|
|||||||
str->str[0] = '\0';
|
str->str[0] = '\0';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (wstr != NULL) {
|
if (wstr != NULL && len > 0) {
|
||||||
uint32_t size = wcslen(wstr) * 4 + 1;
|
uint32_t size = len * 4 + 1;
|
||||||
return_value_if_fail(str_extend(str, size + 1) == RET_OK, RET_OOM);
|
return_value_if_fail(str_extend(str, size + 1) == RET_OK, RET_OOM);
|
||||||
|
|
||||||
if (size > 0) {
|
if (size > 0) {
|
||||||
tk_utf8_from_utf16(wstr, str->str, size);
|
tk_utf8_from_utf16_ex(wstr, len, str->str, size);
|
||||||
str->size = strlen(str->str);
|
str->size = strlen(str->str);
|
||||||
} else {
|
} else {
|
||||||
str_set(str, "");
|
str_set(str, "");
|
||||||
@ -284,6 +284,12 @@ ret_t str_from_wstr(str_t* str, const wchar_t* wstr) {
|
|||||||
return RET_OK;
|
return RET_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret_t str_from_wstr(str_t* str, const wchar_t* wstr) {
|
||||||
|
return_value_if_fail(str != NULL && wstr != NULL, RET_BAD_PARAMS);
|
||||||
|
|
||||||
|
return str_from_wstr_with_len(str, wstr, wcslen(wstr));
|
||||||
|
}
|
||||||
|
|
||||||
ret_t str_to_int(str_t* str, int32_t* v) {
|
ret_t str_to_int(str_t* str, int32_t* v) {
|
||||||
return_value_if_fail(str != NULL && v != NULL, RET_BAD_PARAMS);
|
return_value_if_fail(str != NULL && v != NULL, RET_BAD_PARAMS);
|
||||||
*v = tk_atoi(str->str);
|
*v = tk_atoi(str->str);
|
||||||
|
@ -277,12 +277,23 @@ ret_t str_from_value(str_t* str, const value_t* v);
|
|||||||
* @method str_from_wstr
|
* @method str_from_wstr
|
||||||
* 用value初始化字符串。
|
* 用value初始化字符串。
|
||||||
* @param {str_t*} str str对象。
|
* @param {str_t*} str str对象。
|
||||||
* @param {wchar_t*} wstr wstr。
|
* @param {wchar_t*} wstr Unicode字符串。
|
||||||
*
|
*
|
||||||
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||||
*/
|
*/
|
||||||
ret_t str_from_wstr(str_t* str, const wchar_t* wstr);
|
ret_t str_from_wstr(str_t* str, const wchar_t* wstr);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @method str_from_wstr_with_len
|
||||||
|
* 用value初始化字符串。
|
||||||
|
* @param {str_t*} str str对象。
|
||||||
|
* @param {wchar_t*} wstr Unicode字符串
|
||||||
|
* @param {uint32_t} len Unicode字符串的长度。
|
||||||
|
*
|
||||||
|
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
|
||||||
|
*/
|
||||||
|
ret_t str_from_wstr_with_len(str_t* str, const wchar_t* wstr, uint32_t len);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @method str_to_int
|
* @method str_to_int
|
||||||
* 将字符串转成整数。
|
* 将字符串转成整数。
|
||||||
|
@ -257,3 +257,21 @@ TEST(Str, expand_vars) {
|
|||||||
object_unref(vars);
|
object_unref(vars);
|
||||||
str_reset(s);
|
str_reset(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST(Str, from_wstr) {
|
||||||
|
str_t str;
|
||||||
|
str_t* s = NULL;
|
||||||
|
s = str_init(&str, 0);
|
||||||
|
|
||||||
|
ASSERT_EQ(s->size, 0);
|
||||||
|
str_from_wstr(s, L"123456");
|
||||||
|
ASSERT_STREQ(s->str, "123456");
|
||||||
|
|
||||||
|
str_from_wstr_with_len(s, L"123456", 3);
|
||||||
|
ASSERT_STREQ(s->str, "123");
|
||||||
|
|
||||||
|
str_from_wstr_with_len(s, L"123456", 0);
|
||||||
|
ASSERT_STREQ(s->str, "");
|
||||||
|
|
||||||
|
str_reset(s);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user