getCString(_:maxLength:encoding:)
Converts the string to a given encoding and stores it in a buffer.
Declaration
func getCString(_ buffer: UnsafeMutablePointer<CChar>, maxLength maxBufferCount: Int, encoding: UInt) -> BoolParameters
- buffer:
Upon return, contains the converted C-string plus the
NULLtermination byte. The buffer must include room formaxBufferCountbytes. - maxBufferCount:
The maximum number of bytes in the string to return in buffer (including the
NULLtermination byte). - encoding:
The encoding for the returned C string. For possible values, see Nsstringencoding.
Return Value
true if the operation was successful, otherwise false. Returns false if conversion is not possible due to encoding errors or if buffer is too small.
Discussion
Note that in the treatment of the maxBufferCount argument, this method differs from the deprecated getCString(_:maxLength:) method which it replaces. (The buffer should include room for maxBufferCount bytes; this number should accommodate the expected size of the return value plus the NULL termination byte, which this method adds.)
You can use canBeConverted(to:) to check whether a string can be losslessly converted to encoding. If it can’t, you can use data(using:allowLossyConversion:) to get a C-string representation using encoding, allowing some loss of information (note that the data returned by data(using:allowLossyConversion:) is not a strict C-string since it does not have a NULL terminator).