---
title: "getCString(_:maxLength:encoding:)"
framework: foundation
role: symbol
role_heading: Instance Method
path: "foundation/nsstring/getcstring(_:maxlength:encoding:)"
---

# getCString(_:maxLength:encoding:)

Converts the string to a given encoding and stores it in a buffer.

## Declaration

```swift
func getCString(_ buffer: UnsafeMutablePointer<CChar>, maxLength maxBufferCount: Int, encoding: UInt) -> Bool
```

## Parameters

- `buffer`: Upon return, contains the converted C-string plus the NULL termination byte. The buffer must include room for maxBufferCount bytes.
- `maxBufferCount`: The maximum number of bytes in the string to return in buffer (including the NULL termination byte).
- `encoding`: The encoding for the returned C string. For possible values, see doc://com.apple.foundation/documentation/Foundation/NSStringEncoding.

## Return Value

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

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).

## See Also

### Related Documentation

- [canBeConverted(to:)](foundation/nsstring/canbeconverted(to:).md)

### Getting C Strings

- [cString(using:)](foundation/nsstring/cstring(using:).md)
- [utf8String](foundation/nsstring/utf8string.md)
