'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*); #endifmyfun.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
