c - how to convert wchar_t to string in swift -


i'd wchar_t array c library, , convert swift data structure, code here:

    func getresults(recognizer: unsafemutablepointer<void>, stroke: unsafemutablepointer<int32>, touchstate: int32) -> [string] {     var buflen : int32     var buf = unsafemutablepointer<wchar_t>.alloc(int(buflen))             getrecognition(recognizer, stroke, touchstate, buf, buflen)      var results = string.fromcstring(buf)! //this line has error, cause buf wchar_t*, not char* } 

how convert buf swift data structure? know if buf unsafemutablepointer<int8>.alloc(int(buflen)), can use string.fromcstring(buf)! convert it.

if println(buf[0]), it's print integer 67, ascii value of 'c', how can println(buf[0]) 'c' instead of 0? thanks!

wchar_t alias int32 , contains utf-32 code point in host byte order (which little-endian on current ios , os x platforms).

therefore can convert buffer swift string follows:

if let str = nsstring(bytes: unsafepointer(buf),     length: wcslen(buf) * sizeof(wchar_t),     encoding: nsutf32littleendianstringencoding) as? string {         println(str) } else {     // encoding problem ... } 

(this assumes wchar_t string c library function zero-terminated.)


Comments

Popular posts from this blog

How has firefox/gecko HTML+CSS rendering changed in version 38? -

javascript - Complex json ng-repeat -

jquery - Cloning of rows and columns from the old table into the new with colSpan and rowSpan -