Technicznie Tak, jest ważny.
Struny mają durata do przechowywania statycznego.
Ale to nie wszystko.
Są to C-ciągi. Konwencja w C-bibliotekach i funkcjach polega na zwrocie dynamicznie przydzielonego łańcucha, który powinien zostać zwolniony. Oznacza to, że zwracany wskaźnik niejawnie przekazuje własność z powrotem do osoby wywołującej (jak zwykle w C występują również wyjątki).
Jeśli nie zastosujesz się do tych konwencji, możesz pomylić wielu doświadczonych programistów C, którzy oczekiwaliby tej konwencji. Jeśli nie zastosujesz się do tego standardowego oczekiwania, to powinno być dobrze udokumentowane w kodzie.
Również jest to C++ (jak na twoje tagi). Więc bardziej konwencjonalne jest zwracanie std :: string. Powodem tego jest to, że przekazanie prawa własności za pomocą wskaźników jest tylko dorozumiane (a to doprowadziło do wielu błędów w kodzie C, gdy powyższe oczekiwania zostały złamane, ale udokumentowane, niestety dokumentacja ta nigdy nie została odczytana przez użytkownika kodu). Używając std :: string przechodzisz przez obiekt i nie ma już żadnych kwestii własności (wynik jest przekazywany jako wartość, a zatem twoja), ale ponieważ jest to obiekt, nie ma pytań ani problemów z alokacją zasobów .
Jeśli martwisz się o skuteczność, myślę, że to jest fałszywa sprawa.
Jeśli chcesz to do drukowania za pośrednictwem strumieni jest już standardem konwencja, aby to zrobić:
std::cout << std::boolalpha << false << std::endl;
std::cout << std::boolalpha << true << std::endl;
Tak. Ale w C++ nadal powinieneś preferować std :: string. Zobacz poniżej. –