提交 ccc68fc1 编写于 作者: B Brian Anderson

Add std::istr::str_from_cstr. Issue #855

上级 b2408d57
......@@ -3,7 +3,7 @@
concat, connect, to_upper, replace, char_slice, trim_left, trim_right, trim,
unshift_char, shift_char, pop_char, push_char, is_utf8, from_chars, to_chars,
char_len, char_at, bytes, is_ascii, shift_byte, pop_byte, unsafe_from_byte,
unsafe_from_bytes, from_char, char_range_at;
unsafe_from_bytes, from_char, char_range_at, str_from_cstr;
export from_estr, to_estr, from_estrs, to_estrs;
......@@ -461,4 +461,17 @@ fn count_whities(s: &[char]) -> uint {
fn trim(s: &istr) -> istr {
trim_left(trim_right(s))
}
fn str_from_cstr(cstr: *u8) -> istr {
let res = ~"";
let start = cstr;
let curr = start;
let i = 0u;
while *curr != 0u8 {
push_byte(res, *curr);
i += 1u;
curr = ptr::offset(start, i);
}
ret res;
}
\ No newline at end of file
import std::istr;
import std::vec;
#[test]
fn test_eq() {
......@@ -255,4 +256,12 @@ fn unsafe_from_bytes() {
let a = [65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 65u8];
let b = istr::unsafe_from_bytes(a);
assert b == ~"AAAAAAA";
}
#[test]
fn str_from_cstr() {
let a = [65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 65u8, 0u8];
let b = vec::to_ptr(a);
let c = istr::str_from_cstr(b);
assert c == ~"AAAAAAA";
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册