将Swift CChar数组转换为String

dar*_*inm 6 c string swift

某些C API(例如glGetShaderInfoLog)在缓冲区中返回字符数组.我需要将它们转换为字符串才能使用它们.

var value: GLint = 0
glGetShaderiv(shader, GLenum(GL_INFO_LOG_LENGTH), &value)
var infoLog: GLchar[] = GLchar[](count: Int(value), repeatedValue: 0)
var infoLogLength: GLsizei = 0
glGetShaderInfoLog(shader, value, &infoLogLength, &infoLog)
var s: String = NSString.stringWithUTF8String(infoLog) // Compile Error: Cannot convert the expression's type 'NSString!' to type 'CString'
Run Code Online (Sandbox Code Playgroud)

在这个例子中,GLchar映射到Swift类型的CChar AKA Int8但是在我的生命中,我找不到将用它初始化的String或NSString方法.

dar*_*inm 9

这样做的诀窍:

var s = NSString(bytes: infoLog, length: Int(infoLogLength), encoding: NSASCIIStringEncoding)
Run Code Online (Sandbox Code Playgroud)