0

我正在试验 C++ 文件 I/O,特别是 fstream。我编写了以下代码,截至目前,它告诉我没有 getline 成员函数。我被告知(并且仍然坚持)有一个成员函数 getline。有人知道如何将 getline 成员函数用于 fstream 吗?或者也许是另一种从文件中一次获取一行的方法?我在命令行上接受了两个文件参数,它们具有唯一的文件扩展名。

./fileIO foo.code foo.encode

#include <fstream>
#include <iostream>  
#include <queue>
#include <iomanip>
#include <map>
#include <string>
#include <cassert>
using namespace std;
int main( int argc, char *argv[] )
{
  // convert the C-style command line parameter to a C++-style string,
  // so that we can do concatenation on it
  assert( argc == 2 );
  const string foo = argv[1];

  string line;string codeFileName = foo + ".code";

  ifstream codeFile( codeFileName.c_str(), ios::in );
  if( codeFile.is_open())
  {
  getline(codeFileName, line);
  cout << line << endl;
  }
  else cout << "Unable to open file" << endl;
  return 0;
}
4

2 回答 2

1
getline(codeFileName, line);

应该

getline(codeFile, line);

您传递的是文件名,而不是流。

顺便说一句,getline您使用的是自由函数,而不是成员函数。事实上,应该避免使用成员函数getline。它更难使用,并且可以追溯到string标准库中没有的日子。

于 2013-04-06T19:21:17.260 回答
1

错字

getline(codeFileName, line);

应该

getline(codeFile, line);

我想教训是你必须学习如何解释编译器错误消息。我们都会犯某些类型的错误,并了解它们往往会产生的编译器错误。

于 2013-04-06T19:21:17.887 回答