Skip to content

StrIndexOf

Description

Find the index of the first occurrence of a key inside a Str.

Three call shapes via OVERLOAD + _Generic on key: StrIndexOf(s, key)key is Str * or Zstr. StrIndexOf(s, key, key_len)key is a fixed-length view (Zstr, size). An empty key matches at position 0.

Parameters

Name Direction Description
s in Str object to search in.
key in Substring to search for (Str * / Zstr).
key_len in Length of key when using the 3-arg fixed-length form.

Success

Returns the zero-based index of the first match. The string is not modified.

Failure

Returns SIZE_MAX when no match is found. The string is not modified.

Usage example (Cross-references)

Usage examples (Cross-references)
    // Test string contains/index functions
    bool test_str_contains_index(void) {
        WriteFmt("Testing StrContains and StrIndexOf variants\n");
        DefaultAllocator alloc = DefaultAllocatorInit();
        result      = result && StrContains(&haystack, "Hello");
        result      = result && StrContains(&haystack, "lo Wo", 5);
        result      = result && (StrIndexOf(&haystack, &needle) == 6);
        result      = result && (StrIndexOf(&haystack, "Hello") == 0);
        result      = result && (StrIndexOf(&haystack, "World", 5) == 6);
        result      = result && StrContains(&haystack, "lo Wo", 5);
        result      = result && (StrIndexOf(&haystack, &needle) == 6);
        result      = result && (StrIndexOf(&haystack, "Hello") == 0);
        result      = result && (StrIndexOf(&haystack, "World", 5) == 6);
        result      = result && !StrContains(&haystack, "missing");
        result      = result && (StrIndexOf(&haystack, &needle) == 6);
        result      = result && (StrIndexOf(&haystack, "Hello") == 0);
        result      = result && (StrIndexOf(&haystack, "World", 5) == 6);
        result      = result && !StrContains(&haystack, "missing");
        result      = result && (StrIndexOf(&haystack, "missing") == SIZE_MAX);
        result      = result && (StrIndexOf(&haystack, "World", 5) == 6);
        result      = result && !StrContains(&haystack, "missing");
        result      = result && (StrIndexOf(&haystack, "missing") == SIZE_MAX);
        result      = result && StrContains(&haystack, "");
        result      = result && (StrIndexOf(&haystack, "") == 0);
        result      = result && (StrIndexOf(&haystack, "missing") == SIZE_MAX);
        result      = result && StrContains(&haystack, "");
        result      = result && (StrIndexOf(&haystack, "") == 0);
    
        StrDeinit(&haystack);
Last updated on