[SOLVED] Pass a string in C++

Issue

Quick probably obvious question.

If I have:

void print(string input)
{
  cout << input << endl;
}

How do I call it like so:

print("Yo!");

It complains that I’m passing in char *, instead of std::string. Is there a way to typecast it, in the call? Instead of:

string send = "Yo!";
print(send);

Solution

You can write your function to take a const std::string&:

void print(const std::string& input)
{
    cout << input << endl;
}

or a const char*:

void print(const char* input)
{
    cout << input << endl;
}

Both ways allow you to call it like this:

print("Hello World!\n"); // A temporary is made
std::string someString = //...
print(someString); // No temporary is made

The second version does require c_str() to be called for std::strings:

print("Hello World!\n"); // No temporary is made
std::string someString = //...
print(someString.c_str()); // No temporary is made

Answered By – In silico

Answer Checked By – Jay B. (BugsFixing Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *