2017-02-24 10 views
0

を開くと、これは任意のテキストファイルを開くための正しい方法は何ですか?これは、使用しているコードの小さな部分です。私はパテを介してファイルを開くときにエラーメッセージが表示され続ける。任意のテキストファイル

int main(int argc, char *argv[]) 
{ 
string a; 
a = argv[1]; 
//a = a + ".txt"; 
ifstream fin; 
fin.open(a); 
} 
  • x.cpp: 'int型のmain(int型、文字**)' 関数で:

  • x.cpp:1225:12:エラー:コールに該当する機能に ' std :: basic_ifstream ::オープン(のstd ::文字列&「)

    fin.open(A);

  • x.cpp:1225:12:注:候補である:0:7:ファイルで はx.cppから含ま /usr/include/c++/4.8.2/fstream:538:7:メモ:_CharT =チャーとボイドのstd :: basic_ifstream < _CharT、_Traits> ::オープン(CONSTのchar *、STD :: ios_base :: OPENMODE)。 _Traits = std :: char_traits; std :: ios_base :: OPENMODE = STD :: _ Ios_Openmode]

  • /usr/include/c++/4.8.2(CONSTチャー* __s、ios_base :: OPENMODE __mode = ios_base ::で)オープン/ fstreamの:538:7:注: 'STD ::文字列{別名はstd ::のbasic_string}' 'CONSTのchar *' に

任意の助けからの引数1に対する既知の変換が非常に高く評価されるだろう。あなたがfin.openに直接プログラム引数を渡すことができ

+0

これはパテとは何の関係もありません、あなたは最初にあなたのエラーを修正する必要があります。始めに、 'argv [1]'は 'string'ではなく' char * 'です。 – bejado

答えて

2

、最初stringに変換する必要はありません。

#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(); 
}