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);
答案 0 :(得分:4)
使用Filename.c_str()
而不是open()
不会将std::string
作为文件名的参数。
答案 1 :(得分:3)
在Filename.c_str()
Filename
代替ifstream::open
答案 2 :(得分:2)
有些困惑,ifstream::open
采用C字符串,而不是C ++ std::string
。将行更改为:
inFile.open(Filename.c_str(), fstream::binary);
我不知道为什么C ++标准库的设计者做出了这个选择,但是你去了。
答案 3 :(得分:1)
ifstream
ctor期待const char *
。使用Filename.c_str()
。