---
title: "init(cString:)"
framework: swift
role: symbol
role_heading: Initializer
path: "swift/string/init(cstring:)-2p84k"
---

# init(cString:)

Creates a new string by copying the null-terminated UTF-8 data referenced by the given pointer.

## Declaration

```swift
init(cString nullTerminatedUTF8: UnsafePointer<CChar>)
```

## Parameters

- `nullTerminatedUTF8`: A pointer to a null-terminated sequence of UTF-8 code units.

## Discussion

Discussion If cString contains ill-formed UTF-8 code unit sequences, this initializer replaces them with the Unicode replacement character ("\u{FFFD}"). The following example calls this initializer with pointers to the contents of two different CChar arrays—the first with well-formed UTF-8 code unit sequences and the second with an ill-formed sequence at the end. let validUTF8: [CChar] = [67, 97, 102, -61, -87, 0] validUTF8.withUnsafeBufferPointer { ptr in     let s = String(cString: ptr.baseAddress!)     print(s) } // Prints "Café"

let invalidUTF8: [CChar] = [67, 97, 102, -61, 0] invalidUTF8.withUnsafeBufferPointer { ptr in     let s = String(cString: ptr.baseAddress!)     print(s) } // Prints "Caf�"

## See Also

### Converting a C String

- [init(bytes:encoding:)](swift/string/init(bytes:encoding:).md)
- [init(bytesNoCopy:length:encoding:freeWhenDone:)](swift/string/init(bytesnocopy:length:encoding:freewhendone:).md)
- [init(validatingCString:)](swift/string/init(validatingcstring:)-992vo.md)
- [init(validatingCString:)](swift/string/init(validatingcstring:)-98wra.md)
- [init(cString:)](swift/string/init(cstring:)-6kr8s.md)
- [init(cString:encoding:)](swift/string/init(cstring:encoding:)-3h7bc.md)
- [init(cString:encoding:)](swift/string/init(cstring:encoding:)-3qgzd.md)
- [init(decodingCString:as:)](swift/string/init(decodingcstring:as:)-8way7.md)
- [decodeCString(_:as:repairingInvalidCodeUnits:)](swift/string/decodecstring(_:as:repairinginvalidcodeunits:)-46n2p.md)
