[ CCode ( cname = "g_utf8_strlen" ) ]
public int char_count (ssize_t max = -1)

Computes the length of the string in characters, not including the terminating nul character.

If the max'th byte falls in the middle of a character, the last (partial) character is not counted.

Example: Utf8-handling, length in characters:

public static int main (string[] args) {
string str = "Ἀρχιμήδης";
int letters = str.char_count ();
int bytes = str.length;

// Output: ``letters: 9, bytes: 19``
print ("letters: %d, bytes: %d\n", letters, bytes);
return 0;

valac --pkg glib-2.0 string.char_count.vala



the maximum number of bytes to examine. If max is less than 0, then the string is assumed to be nul-terminated. If max is 0, p will not be examined and may be null. If max is greater than 0, up to max bytes are examined


pointer to the start of a UTF-8 encoded string


the length of the string in characters