2 Stimmen

Ich erhalte den Fehler C2664 bei einigen E/A-Codes

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

Zeile 293 lautet inFile.open(Filename, fstream::binary);

4voto

Timo Geusch Punkte 23597

Utilice Filename.c_str() stattdessen - open() nimmt keine std::string als Parameter für den Dateinamen.

3voto

f4. Punkte 3796

Utiliser Filename.c_str() anstelle von Filename in der Berufung von ifstream::open

2voto

Tyler McHenry Punkte 71707

Das ist etwas verwirrend, ifstream::open nimmt eine C-Zeichenkette, nicht eine C++ std::string . Ändern Sie die Zeile in:

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

Ich habe keine Ahnung, warum die Entwickler der C++-Standardbibliothek diese Entscheidung getroffen haben, aber so ist es.

1voto

dirkgently Punkte 104289

Le site ifstream ctor erwartet eine const char * . Verwenden Sie Filename.c_str() .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X