Is there any way to tell C++11 to use std::string instead of const char*?

Viewed 186

Im trying to migrate code from another language that allows concatonation of strings with the '+' operator.

//defintion 
void print(std::string s) {
    std::cout << s;
}
//call
print("Foo " + "Bar");

The issue I'm having is that c++ sees "Foo " and "Bar" as const char* and cannot add them, is there any way to fix this. I have tried including the string library to see if it would change them automatically but that didnt seem to work.

2 Answers

In and later:

using namespace std::literals;
print("Foo "s + "Bar");

In :

std::string operator "" _s(const char* str, std::size_t len) {
    return std::string(str, len);
}

print("Foo "_s + "Bar");

Or, in all versions:

print(std::string("Foo ") + "Bar");

The easiest solution for the case of 2 string literals:

print("Foo " "Bar");

Otherwise:

print(std::string("Foo ") + "Bar");
Related