2009-07-21 19 views
3

このように、私はCを学ん++と私ははifstream方法で文字列を使用しようとしているいくつかのトラブルを取得していますに文字列を入れてここでは、完全なコードは次のとおりです。はifstream方法

// obtaining file size 
#include <iostream> 
#include <fstream> 
using namespace std; 

int main (int argc, char** argv) 
{ 
    string file; 
    long begin,end; 
    cout << "Enter the name of the file: "; 
     cin >> file; 
    ifstream myfile (file); 
    begin = myfile.tellg(); 
    myfile.seekg (0, ios::end); 
    end = myfile.tellg(); 
    myfile.close(); 
    cout << "File size is: " << (end-begin) << " Bytes.\n"; 

    return 0; 
} 

そして、ここでは、Eclipseのエラー、法の前のxです

no matching function for call to `std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)' 

しかし、Eclipseでコンパイルしようとすると、方法の前にxと表示されますが、構文にエラーがありますが、構文に間違いがありますか?ありがとう!

+0

はあなたが取得しているエラーの詳細を提供してもらえますか?あるいは、完全なサンプルを投稿することもできます... –

+0

多分fstreamは含まれていませんか?完全なコードを入力してください – CsTamas

+0

正しいヘッダーが含まれていますか? – mdec

答えて

8

char*ifstreamコンストラクタには、c_str()関数を渡す必要があります。

// includes !!! 
#include <fstream> 
#include <iostream> 
#include <string> 
using namespace std; 

int main() 
{ 
    string filename; 
    cout << "Enter the name of the file: "; 
    cin >> filename; 
    ifstream file (filename.c_str()); // c_str !!! 
} 
+0

ありがとう非常にjia3ep !!!!!!!!!!!!! –

5

問題ははifstreamのコンストラクタは、文字列を受け入れないということですが、Cスタイルの文字列:

explicit ifstream::ifstream (const char * filename, ios_base::openmode mode = ios_base::in); 

そしてstd::stringはCスタイルの文字列への暗黙的な変換はありませんが、明示的な1:c_str()

用途:

... 
ifstream myfile (file.c_str()); 
... 
関連する問題