I think the thing here is since C++ doesn't offer a built in way to do this, but there are lots of ways to do it your self.
Of special note is that in the general case to join a bunch of strings, and then split them again, you have to consider what if one of the strings actually contains your separator? Or what if the API or other requirements disallow certain elements (e.g. while `std::string` can contain null (0) elements, many `char*` API's can't. And if you want to display your string, many more restrictions). Which then brings you into escaping/encoding.
And again many solutions to this, many languages/schemes use a backslash to handle just the “special” characters (including C/C++ source code itself, but the standard lib has no function to create or parse these…), things like base64 will just encode everything, other schemes like percent encoding (URLs), or enclosing with double quotes (e.g. CSV, which then leads to double double quotes). So no real right choice, if you need to exchange data with one (say JavaScript/JSON) use that, otherwise just pick one.