我在某些 I/O 代码上收到错误 C2664

发布于 2024-08-22 22:52:34 字数 866 浏览 6 评论 0原文

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);

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

Line 293 is inFile.open(Filename, fstream::binary);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

空城之時有危險 2024-08-29 22:52:34

使用 Filename.c_str() 代替 - open() 不采用 std::string 作为文件名参数。

Use Filename.c_str() instead - open() doesn't take a std::string as a parameter for the filename.

孤蝉 2024-08-29 22:52:34

在调用 ifstream::open 时使用 Filename.c_str() 代替 Filename

use Filename.c_str() instead of Filename in the call of ifstream::open

生死何惧 2024-08-29 22:52:34

有点令人困惑的是,ifstream::open 采用 C 字符串,而不是 C++ std::string。将行更改为:

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

我不知道为什么 C++ 标准库的设计者做出这样的选择,但是就是这样。

Somewhat perplexingly, ifstream::open takes a C-string, not a C++ std::string. Change the line to:

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

I have no idea why the designers of the C++ standard library made this choice, but there you go.

甜点 2024-08-29 22:52:34

ifstream 构造函数需要一个 const char *。使用Filename.c_str()

The ifstream ctor expects a const char *. Use Filename.c_str().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文