'std::string' has not been declared



  • Moin!
    Ich habe da ein witziges Problem: Habe zum ersten mal (juppie!) eine funktion in eine eigene Datei ausgelagert (soll nen char-array auslesen und in einen string schreiben). Als Konsolenanwendung läuft das auch (benutze Devc++), wenn ich aber die gleichen Dateien zu einem Windows-Project hinzufüge meldet der Compiler:
    'std::string' has not been declared
    mit Hinweis auf die Definition in der Headerdatei. Hier der code:

    myfun.h

    #ifndef MYFUN_H
    #define MYFUN_H
    bool c2str(char*,std::string*);
    #endif
    

    myfun.cpp

    //my functions
    #include <iostream>
    #include <string>
    
    bool c2str(char *input,std::string *output)
    {
         for(;*input;input++)
              *output+=*input; 
         return true;
    }
    

    In der Konsolenanwendung (wo's ja funzt) verwende ich folgenden code:

    #include <cstdlib>
    #include <iostream>
    #include "myfun.h"
    
    using namespace std;
    
    int main(int argc, char *argv[])
    {
        char input[]="Hallo Welt!";
        string output;
        c2str(input,&output);
    
        cout<<output;
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    

    Warum klappt's beim einen Projekt und beim anderen nicht?
    Sind die std jeweils unterschiedlich definiert?

    Danke für alle Hinweise!



  • Du solltest auch im Header schon ein #include <string> unterbringen 😉
    (in deinem Konsolenprojekt wurde die <string> zufälligerweise indirekt eingebunden, weil sie wohl irgendwo in der <iostream> benötigt wurde - in der Windows-Anwendung nicht)



  • ? Dein Code ist schwachsinnig da std::string schein mit char klar kommt?!

    #include <string>
    #include <iostream>
    
    int main()
    {
        char input[] = "Hallo Welt!";
        std::string output(input); // auch überflüssig weil auch std::cout mit char klar kommt ..
        std::cout << output << std::endl;
    }
    

    ?



  • @CStoll: Danke! Das war's 😃


Anmelden zum Antworten