2017-02-24 5 views
0

Ist dies der richtige Weg, um eine Textdatei zu öffnen? Dies ist ein kleiner Abschnitt des Codes, den ich benutze. Ich bekomme immer eine Fehlermeldung, wenn ich versuche, eine Datei über Putty zu öffnen.Öffnen einer beliebigen Textdatei

int main(int argc, char *argv[]) 
{ 
string a; 
a = argv[1]; 
//a = a + ".txt"; 
ifstream fin; 
fin.open(a); 
} 
  • x.cpp: In Funktion 'int main (int, char **)':

  • x.cpp: 1225: 12: Fehler: keine Anpassungsfunktion für Aufruf von ' std :: basic_ifstream :: offen (std :: string &) '

    fin.open (a);

  • x.cpp: 1225: 12: Anmerkung: Kandidat: In-Datei von x.cpp inbegriffen: 7: 0: /usr/include/c++/4.8.2/fstream:538:7: note : void std :: basic_ifstream < _CharT, _Traits> :: öffnen (const char *, std :: ios_base :: openmode) [mit _CharT = char; _Traits = std :: char_traits; std :: :: ios_base openmode = std :: _ Ios_Openmode]

    open (const char * __s, ios_base :: openmode = __mode ios_base :: in)

  • /usr/include/c++/4.8.2/fstream: 538: 7: Anmerkung: es gibt keine Konvertierung für Argument 1 von 'std :: string {aka std :: basic_string}' auf 'const char *'

Jede Hilfe wäre sehr dankbar.

+0

Das hat mit Kitt nichts zu tun, müssen Sie zuerst Ihre Fehler beheben. Zu Beginn ist 'argv [1]' keine 'string', sondern ein' char * '. – bejado

Antwort

2

Sie können das Programm Argument direkt an fin.open passieren, müssen Sie nicht auf eine string erste konvertieren:

#include <iostream> 
#include <fstream> 

using namespace std; 

int main(int argc, char *argv[]) 
{ 
    ifstream fin; 
    fin.open(argv[1]); 

    string line; 
    if (fin.is_open()) { 
     getline(fin, line); 
     cout << line << '\n'; 
    } 

    fin.close(); 
} 
Verwandte Themen