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_viewtype 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_viewis 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.