50 votes

C++ passer une chaîne

Question rapide probablement évidente.

Si j'ai:

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

Comment puis-je l'appeler ainsi :

 print("Yo!");

Il se plaint que je passe char *, au lieu de std::string. Existe-t-il un moyen de le transtyper, dans l'appel ? À la place de:

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

Merci.

72voto

In silico Points 30778

Vous pouvez écrire votre fonction pour prendre un const std::string& :

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

ou un const char* :

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

Les deux manières vous permettent de l'appeler comme ceci :

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

La deuxième version nécessite que c_str() soit appelé pour std::string s :

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

4voto

svens Points 5894
print(string ("Yo!"));

Vous devez en faire un objet std::string (temporaire).

3voto

Fiktik Points 1905

Le moyen évident serait d'appeler la fonction comme ceci

 print(string("Yo!"));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X