0 Pluspunkte 0 Minuspunkte

Ich versuche einen einfachen String auf dem Bildschirm anzuzeigen 

#include <stdio.h>  

using namespace std;  

int main() {          
    std:string str = "Hello";     
    printf("%s", str);     
    return 0; 
}  

aber bekomme dabei diesen Fehler :

main.cpp: In function ‘int main()’:
main.cpp:18:14: warning: format ‘%s’ expects argument of type ‘char*’, but argument 2 has type ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’} [-Wformat=]
   18 |     printf("%s", str);

Was mache ich hier falsch?

von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Die Funktion printf erwartet einen char* Zeiger als Argument für %s, während std::string eine C++-Klasse ist. Du kannst entweder die C++ Zeichenausgabe verwenden 

int main() {
    std::string str = "Hello";
    std::cout << str;
    return 0;
}

oder std::string in einen C-String (char *) umwandeln.

#include <iostream>
#include <string>
#include <stdio.h>

int main() {
    std::string str = "Hello";
    printf("%s", str.c_str());
    return 0;
}
von (884 Punkte)  
0 Pluspunkte 0 Minuspunkte

Die Funktion printf() erwartet ein char* Array, ein std::string ist eine eigene Klasse. Du kannst einen std::string zu einem char* Array machen indem du die Methode c_str() aufrufst.

printf("%s", str.c_str());
von (868 Punkte)