---
title: "init(validatingUTF8:)"
framework: swift
role: symbol
role_heading: Initializer
path: "swift/string/init(validatingutf8:)-208fn"
---

# init(validatingUTF8:)

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

## Declaration

```swift
init?(validatingUTF8 cString: UnsafePointer<CChar>)
```

## Parameters

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

## Discussion

Discussion This initializer does not try to repair ill-formed UTF-8 code unit sequences. If any are found, the result of the initializer is nil. 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(validatingUTF8: ptr.baseAddress!)     print(s) } // Prints "Optional("Café")"

let invalidUTF8: [CChar] = [67, 97, 102, -61, 0] invalidUTF8.withUnsafeBufferPointer { ptr in     let s = String(validatingUTF8: ptr.baseAddress!)     print(s) } // Prints "nil" note: This initializer has been renamed. Use String.init?(validatingCString:) instead.

## See Also

### Creating a String from Unicode Data

- [init(_:)](swift/string/init(_:)-8ay23.md)
- [init(data:encoding:)](swift/string/init(data:encoding:).md)
- [init(validating:as:)](swift/string/init(validating:as:)-84qr9.md)
- [init(validating:as:)](swift/string/init(validating:as:)-5cw2c.md)
- [init(utf8String:)](swift/string/init(utf8string:)-8qmaq.md)
- [init(utf8String:)](swift/string/init(utf8string:)-3mcco.md)
- [init(utf16CodeUnits:count:)](swift/string/init(utf16codeunits:count:).md)
- [init(utf16CodeUnitsNoCopy:count:freeWhenDone:)](swift/string/init(utf16codeunitsnocopy:count:freewhendone:).md)
- [init(decoding:as:)](swift/string/init(decoding:as:).md)
