2

我正在编写一个简单的程序来接收两个文件。终端命令行如下所示。

./fileIO foo.code foo.encode

当它运行时,第二个文件没有读入。当我输入

./fileIO foo.code foo.code

有用。我似乎无法弄清楚为什么第二个没有打开。有任何想法吗?谢谢!

#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 == 3 );
  const string code = argv[1];
  const string encode = argv[2];
  string firstTextFile = code;
  string secondTextFile = encode;

  //manipulate the first infile
  ifstream firstFile( firstTextFile.c_str(), ios::in );
  if( !firstFile ) 
  {
    cerr << "Cannot open text file for input" << endl;
    return 1;
  }

  string lineIn;
  string codeSubstring;
  string hexSubstring;
  while( getline( firstFile, lineIn ) ) 
  {
    hexSubstring = lineIn.substr(0, 2);
    codeSubstring = lineIn.substr(4, lineIn.length() );
    cout << hexSubstring << ", " << codeSubstring << endl;
  }

  //manipulate the second infile
  ifstream secondFile( secondTextFile.c_str(), ios::in );
  if( !secondFile ) 
  {
    cerr << "Cannot open text file for input" << endl;
    return 1;
  }

  char characterIn;
  while( secondFile.get( characterIn ) )
  {
    cout << characterIn << endl;
  }


  return 0;
}
4

1 回答 1

0

您可能想尝试的一件事是在使用完文件后按照标准过程添加 close() 调用。如果在之前的运行中没有正确关闭文件,有时会出现重新打开文件的问题。

firstFile.close();
secondFile.close();

此外,如果有一些挥之不去的文件句柄尚未释放,您可以尝试重新启动计算机。

于 2013-04-07T22:25:55.547 回答