将ifstream传递给C ++中的函数

时间:2010-02-23 02:09:50

标签: c++ ifstream

我正在尝试为基因测序项目构建16种不同的后缀树。它们正在以主体形式建造

int main()
{  
  ifstream fp;  
  fp.open("filepath", ifstream::in);  
  Tree I(fp);  
  fp.close();

我正在尝试使用以下代码在我的构造函数中使用它们:

Tree::Tree(ifstream &fp)   
{  
  string current = "";  
  char* line;  
  fp.getLine(line, 100); //ignore first line  
  for(int i=0; i<100; i++)     
    {  
      char temp = (char)fp.get();  
      if(temp=='\n')i--;  
      else current+=temp;  
    }  
  insert(current);  
  while(fp.good())  
    {  
      current = current.substr(1,99);  
      char temp = (char)fp.get();  
      if(temp=='\n')temp=(char)fp.get();  
      if(temp==EOF) break;  
      current+=temp;  
      insert(current);  
    }  
}  

当我尝试编译时,我在每个使用fp的实例中都会遇到这些错误:

  

suffix.cpp:在构造函数Tree::Tree(std::ifstream&)中:
  suffix.cpp:12:错误:无效使用未定义类型struct std::basic_ifstream<char, std::char_traits<char> >
  /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iosfwd:89:error: struct std::basic_ifstream<char, std::char_traits<char> >的声明
  suffix.cpp:15:错误:无效使用未定义类型struct std::basic_ifstream<char, std::char_traits<char> >
  /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../include/c++/4.1.2/iosfwd:89:error: struct std::basic_ifstream<char, std::char_traits<char> >的声明

2 个答案:

答案 0 :(得分:6)

您是否#included fstream标题?

答案 1 :(得分:5)

看起来你有#included&lt; iosfwd&gt;而不是&lt; fstream&gt;在您的源文件中。