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  

1 Antwort

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