In this blog post, we’ll look at several different view/reference types introduced in Modern C++. The first one is
string_view
added in C++17. C++20 brought std::span
and ranges views. The last addition is std::mdspan
from C++23.
Spans, string_view, and Ranges - Four View types (C++17 to C++23)
by Bartlomiej Filipek
From the article:
Thestd::string_view
type is a non-owning reference to a string. It provides an object-oriented way to represent strings and substrings without the overhead of copying or allocation that comes withstd::string
.std::string_view
is especially handy in scenarios where temporary views are necessary, significantly improving the performance and expressiveness of string-handling code. The view object doesn’t allow modification of characters in the original string.
Here’s a basic example:
- #include <format>
- #include <iostream>
- #include <string_view>
- void find_word(std::string_view text, std::string_view word) {
- size_t pos = text.find(word);
- if (pos != std::string_view::npos)
- std::cout << std::format("Word found at position: {}\n", pos);
- else
- std::cout << "Word not found\n";
- }
- int main() {
- std::string str = "The quick brown fox jumps over the lazy dog";
- std::string_view sv = str;
- find_word(sv, "quick");
- find_word(sv, "lazy");
- find_word(sv, "hello");
- }
Add a Comment
Comments are closed.