2017-06-26 9 views
0

Ich benutze Cygwin auf Windows 10. Wenn ich versuche, ein sehr einfaches Programm, das Zeilen aus einer Datei an der Eingabeaufforderung zeigt, bekomme ich dieser Fehler:C++ - Fehler in Cygwin; keine übereinstimmende Funktion für den Aufruf von 'std :: basic_fstream ...'

$ c++ -c test.cpp 
test.cpp: In function ‘int main()’: 
test.cpp:9:31: error: no matching function for call to ‘std::basic_fstream<char>::open(std::string&, const openmode&)’ 
myfile.open(filename, ios::in); 
          ^
In file included from test.cpp:2:0: 
/usr/lib/gcc/x86_64-pc-cygwin/5.4.0/include/c++/fstream:1001:7: note: candidate: void std::basic_fstream<_CharT, _Traits>::open(const char*, std::ios_base::openmode) [with _CharT = char; _Traits = std::char_traits<char>; std::ios_base::openmode = std::_Ios_Openmode] 
    open(const char* __s, 
^
/usr/lib/gcc/x86_64-pc-cygwin/5.4.0/include/c++/fstream:1001:7: note: no known conversion for argument 1 from ‘std::string {aka std::basic_string<char>}’ to ‘const char*’ 

ich dachte, es war ein lokales Problem installieren, aber ich installierte cygwin auf einem zweiten Computer und das gleiche passierte. Ich bin ratlos.

Nebennote; wenn ich die ifstream Header enthalten, änderte sich der Fehler auf „Fatal error: ifstream: Keine solche Datei oder das Verzeichnis

Hier ist mein Code:.!

#include <iostream> 
#include <fstream> 

using namespace std; 

int main() 
{ 
    string filename="names.txt"; 
    fstream myfile; 
    myfile.open(filename, ios::in); 
    string firstname, lastname, id; 
    for (int i = 0; i < 1; ++i) 
    { 
      myfile >> firstname >> lastname >> id; 
      cout << firstname << " " << lastname << id <<endl; 
    } 
    return 0; 
} 

Jede Hilfe wäre sehr willkommen Dies ist mein erster hier posten, also wenn ich irgendwelche Fauxpas begangen lassen Sie es mich wissen

+1

Willkommen bei Stackoverflow! Bitte poste deine Code- und Fehlermeldungen nicht als Bilder. Bitte fügen Sie sie in Ihre Frage ein. (Siehe https://meta.stackexchange.com/questions/22186/how-doi-format-my-code-blocks) –

+0

Sicher, danke! Irgendwelche Eingaben? –

+0

Danke, bitte auch den Text des Fehlers posten. –

Antwort

0

Es sieht aus wie Sie #include <string> benötigen.

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 
... 

Die string include wird von einigen Compilern automatisch hinzugefügt, aber es scheint, dass dies keiner von ihnen ist.

+0

Danke, aber kein Glück, die gleichen Fehler erscheinen. –

0

heißt es aus dem complier klar: no known conversion for argument 1 from ‘std::string {aka std::basic_string<char>}’ to ‘const char*

so müssen Sie c string verwenden, anstatt std::string

Verwandte Themen