“Printf” sur les chaînes imprime du charabia

J’essaie d’imprimer une chaîne de la manière suivante:

int main(){ ssortingng s("bla"); printf("%s \n", s); ....... } 

mais tout ce que je reçois, c’est ce charabia aléatoire.

Pouvez-vous s’il vous plaît expliquer pourquoi?

Parce que %s indique un caractère char* , pas un std::ssortingng . Utilisez s.c_str() ou mieux encore, utilisez iostream:

 #include  #include  using namespace std; int main() { ssortingng s("bla"); std::cout << s << "\n"; } 

Vous devez utiliser c_str pour obtenir l’équivalent c-ssortingng du contenu de la chaîne, car printf ne sait pas comment imprimer un object chaîne.

 ssortingng s("bla"); printf("%s \n", s.c_str()); 

Au lieu de cela, vous pouvez simplement faire:

 ssortingng s("bla"); std::cout< 

J’ai réussi à imprimer la chaîne en utilisant “cout” quand je suis passé de:

 #include  

à

 #include  

J’aimerais comprendre pourquoi c’est important …

Pourquoi n’utilisez-vous pas

 char s[]="bla";