Bawiłem się std::string_view
biblioteką i zastanawiałem się nad zmianą bazy kodu, nad którą pracowałem std::string_view
tak często, jak to możliwe. Jednak w wielu wątkach, które przeczytałem na temat tego, kiedy i gdzie użyć std::string_view
zamiast const std::string &
. Widziałem wiele odpowiedzi mówiących: „Kiedy nie potrzebujesz łańcucha zakończonego znakiem zerowym”. Kiedy zacząłem szukać w Internecie, „kiedy potrzebujesz łańcucha zakończonego znakiem zerowym?” Tak naprawdę nie spotkałem żadnych pomocnych odpowiedzi na ten temat.
Mogę wymyślić przykład zewnętrznej biblioteki, do której link będzie się wymagał std::string
. W takim przypadku potrzebujesz łańcucha zakończonego znakiem zerowym, ponieważ biblioteka tego wymaga. Wydaje mi się, że innym przykładem byłaby potrzeba modyfikacji samego łańcucha, ale nie przepuszczalibyśmy go const &
, gdybyśmy musieli go zmodyfikować.
Kiedy więc miałbyś użyć łańcucha zakończonego zerą?
Linki, na które spojrzałem:
const char*
argument. Odpowiedź eeroriki ma przykład.