Skip to content

Simple, robust, and convenient read-only string handling in C.

License

Notifications You must be signed in to change notification settings

agl-alexglopez/str_view

Folders and files

NameName
Last commit message
Last commit date
Aug 4, 2024
Aug 5, 2024
Jul 13, 2024
Mar 29, 2024
Mar 29, 2024
Sep 8, 2024
Nov 11, 2024
Nov 7, 2024
Jul 14, 2024
Mar 27, 2024
Nov 10, 2024
Jul 22, 2024
Jul 10, 2024
Jan 28, 2025
Nov 11, 2024
Nov 7, 2024
Jul 16, 2024
Aug 5, 2024
Feb 6, 2024
Aug 5, 2024
Aug 5, 2024
Mar 27, 2024

Repository files navigation

str_view

mini-grep

Pictured Above: Mocking up a mini grep program is easy with the right tools. Use mini_grep and any other sample programs as they arrive in the samples/ folder to test the utility and convenience of a str_view.

The str_view type is a simple, copyable, flexible, read only view of const char * data in C, modeled after std::string_view in C++. However, there are a few extra features including read-only tokenization and threeway comparison between plain const char * data and a str_view.

A str_view is a 16-byte struct and, due to this size, is treated throughout the interface as a copyable type. This is neither a trivially cheap nor excessively expensive type to copy. The intention of this library is to abstract away many sharp edges of working with C-strings to provide usage that "just works," not optimize for performance yet.

Install Instructions

This library offers a manual installation through the Releases page or a port installation through the vcpkg package manager.

See INSTALL.md file for instructions on how to install the str-view port through vcpkg or how to manually download, build, and install the library.

Interface

Read the str_view.h interface for the full API and documentation.

Status

This library is not yet version 1.0. To reach 1.0 I would like to implement the following.

  • More robust suite of tests to detect Undefined Behavor common with string handling.
  • Better documentation highlighting when I cannot protect the user from Undefined Behavior through programmer error.
  • SIMD intrinsics. At the very least, SIMD implemented for the short string brute force searches is critical.

That being said, I have already found this library very helpful whenever I need to write C code. Please consider giving it a try.