Techniquement Oui c'est valide.
Les chaînes ont une durée de stockage statique.
Mais ce n'est pas toute l'histoire.
Ce sont des C-Strings. La convention dans C-Libraries et funcctions est de retourner une chaîne allouée dynamiquement qui devrait être libérée. C'est-à-dire qu'un pointeur renvoyé renvoie implicitement la propriété à l'appelant (comme d'habitude en C il y a aussi des exceptions).
Si vous ne respectez pas ces conventions, vous risquez de dérouter un grand nombre de développeurs expérimentés qui attendent cette convention. Si vous ne respectez pas cette attente standard, cela devrait être bien documenté dans le code.
Aussi c'est C++ (selon vos tags). Il est donc plus conventionnel de retourner une chaîne std :: string. La raison en est que le transfert de propriété via les pointeurs n'est qu'implicite (et que cela a conduit à beaucoup d'erreurs dans le code C alors que l'attente ci-dessus était cassée mais documentée, malheureusement le document n'a jamais été lu par l'utilisateur). En utilisant une chaîne std :: vous passez un objet et il n'est plus question de propriété (le résultat est retransmis en valeur et donc le vôtre), mais comme il s'agit d'un objet il n'y a pas de questions ou problèmes d'allocation de ressources .
Si vous vous inquiétez de l'efficacité, je pense que c'est une fausse préoccupation.
Si vous voulez que cela pour l'impression via flux il existe déjà une convention standard pour le faire:
std::cout << std::boolalpha << false << std::endl;
std::cout << std::boolalpha << true << std::endl;
Oui. Mais en C++, vous devriez toujours préférer std :: string. Voir ci-dessous. –