2
void BinaryTree::InitializeFromFile(string Filename){
ifstream inFile;
inFile.open(Filename, fstream::binary);
if(inFile.fail()){
    cout<<"Error in opening file "<<Filename;
    return;
}
 for(int i=0;i<=255;i++) Freq[i]=0;
  char c;
  inFile.get(c);
  while(!inFile.eof()){
    Freq[c] ++;
    inFile.get(c);
  }
}  



HuffmanTree.cpp(293) : error C2664: 'void std::basic_ifstream<_Elem,_Traits>::
open(const wchar_t *,std::ios_base::openmode,int)' : cannot convert parameter 1 
from 'std::string' to 'const wchar_t *'
1>    with
1>    [
1>        _Elem=char,
1>        _Traits=std::char_traits<char>
1>    ]
1>    No user-defined-conversion operator available that can perform this 
      conversion, or the operator cannot be called

293行目はinFile.open(Filename, fstream::binary);

4

4 に答える 4

4

Filename.c_str()代わりに使用してください-ファイル名のパラメータとしてをopen()取りません。std::string

于 2010-02-26T18:42:34.533 に答える
3

の呼び出しのFilename.c_str()代わりに使用するFilenameifstream::open

于 2010-02-26T18:42:27.827 に答える
2

やや困惑することにifstream::open、C++ではなくC文字列を取りますstd::string。行を次のように変更します。

inFile.open(Filename.c_str(), fstream::binary);

C ++標準ライブラリの設計者がこの選択をした理由はわかりませんが、それで終わりです。

于 2010-02-26T18:43:41.893 に答える
1

ctorifstreamはを期待しconst char *ます。を使用しFilename.c_str()ます。

于 2010-02-26T18:43:24.157 に答える