怎么把 wchar_t * 转换为 string?

调用 Win32 API,很多接口都是 wchar_t * 字符串,如何转换为 go 的 string

阅读 4.7k
1 个回答

给一个例子

package main

// #define WIN32_LEAN_AND_MEAN
// #include <windows.h>
import "C"
import "syscall"
import "fmt"

func GetCurrentDirectory() string {
    if bufLen := C.GetCurrentDirectoryW(0, nil); bufLen != 0 {
        buf := make([]uint16, bufLen)
        if bufLen := C.GetCurrentDirectoryW(bufLen, (*C.WCHAR)(&buf[0])); bufLen != 0 {
            return syscall.UTF16ToString(buf)
        }
    }
    return ""
}

func main() {
    fmt.Printf("cur dir %s\n", GetCurrentDirectory())
    return
}

请用安装了TDM-GCC安装包

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题