J'ai essayé ça, mais ça n'a pas marché.
#include <string>
string someString("This is a string.");
printf("%s\n", someString);
#include <iostream>
std::cout << someString << "\n";
ou
printf("%s\n",someString.c_str());
Vous devez accéder au tampon sous-jacent:
printf("%s\n", someString.c_str());
Ou mieux, utilisez cout << someString << endl;
(vous devez #include <iostream>
pour utiliser cout
)
De plus, vous voudrez peut-être importer l'espace de noms std
en utilisant using namespace std;
ou préfixer à la fois string
et cout
avec std::
.
Vous avez besoin de #include<string>
pour utiliser string
ET #include<iostream>
pour utiliser cin
et cout
. (Je n'ai pas compris quand j'ai lu les réponses). Voici un code qui fonctionne:
#include<string>
#include<iostream>
using namespace std;
int main()
{
string name;
cin >> name;
string message("hi");
cout << name << message;
return 0;
}
Vous ne pouvez pas appeler "printf" avec un paramètre std :: string. Le "% s" est conçu pour la chaîne de style C: char * ou char []. En C++, vous pouvez faire comme ça:
#include <iostream>
std::cout << YourString << std::endl;
Si vous absolument voulez utiliser printf, vous pouvez utiliser la méthode "c_str ()" qui donne une représentation char * de votre chaîne.
printf("%s\n",YourString.c_str())
Si vous souhaitez utiliser printf()
, vous souhaiterez peut-être également:
#include <stdio.h>