从几个文件C ++中读取文本

时间:2011-10-21 02:34:41

标签: c++

我在名为foo1,foo2,...,foo5的文件夹中有一些文本文件。我试着写一个C ++程序 打印出文件的内容,但编译器发出错误。 这是程序。

int main(int argc, char *argv[])
{

  string common="foo";

  for(int count=1;count<=5;++count)
  {
  //Convert count to an string.
  stringstream ss;
  ss<<count;
  string numstring=ss.str();

  string filename=common+numstring;
  ifstream infile(filename); 
  string line;

  //Print out the lines from the file.
   while(getline(infile,line))
     {
       cout<<line<<endl;

     }
  }

  return 0;
}

编译器发出错误,如

g++ -Wall c++.cpp
c++.cpp: In function ‘int main(int, char**)’:
c++.cpp:26: error: no matching function for call to ‘std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(std::string&)’
/usr/include/c++/4.4/fstream:454: note: candidates are: std::basic_ifstream<_CharT, _Traits>::basic_ifstream(const char*, std::_Ios_Openmode) [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.4/fstream:440: note:                 std::basic_ifstream<_CharT, _Traits>::basic_ifstream() [with _CharT = char, _Traits = std::char_traits<char>]
/usr/include/c++/4.4/iosfwd:81: note:                 std::basic_ifstream<char, std::char_traits<char> >::basic_ifstream(const std::basic_ifstream<char, std::char_traits<char> >&)

有人可以帮我解决这个问题吗?如果我在终端输入cat foo*,程序的输出应该是我得到的。

2 个答案:

答案 0 :(得分:3)

替换:

ifstream infile(filename);

ifstream infile(filename.c_str());

您发布的错误消息显示了这一点。 fstreambasic_fstream<>的typedef。从本质上讲,您的错误消息表明没有fstream构造函数带有string&,但有一个带char*

答案 1 :(得分:1)

你不能这样做:

ifstream infile(filename); 

ifstream类不知道如何将字符串作为文件名。我确实知道如何使用字符数组:

ifstream infile(filename.c_str());

在引入迭代之前,您应该使用单个输入文件解决这个问题。 开始简单并建立起来。一路测试。永远不要添加到不起作用的代码。