无法打开文件,mystate for datafile2 = 2

时间:2013-04-11 16:33:49

标签: c++

当我调试这个时,我可以看到它打开datafile1,它读取第一行和 在日志文件中我得到了roma-3-4.log

它更改为c:/temp/roma-3-4.log但是当我想打开它时,它会失败。我检查了_Mystate = 2。 那是什么意思

由于

transferubs.cfg中的

就是这个 罗马-3-4.log

* * 在目录c:/ temp /中我有以下文件 罗马-3-4.log

#include <iostream>
#include <fstream>
#include <string>
#include <vector>

using namespace std;



int main()
{


  string input;
  string logfile;
  string errorfile;

  short logfilesize1;


   fstream dataFile1("c:/temp/transfersubs.cfg", ios::in);

  if (dataFile1)
  {
  getline(dataFile1, input, '$');
  logfile=input;
  logfilesize1=input.size();
  errorfile=input;
  errorfile[logfilesize1-4]='e';
  errorfile[logfilesize1-3]='r';
  errorfile[logfilesize1-2]='r';

  logfile="C:/Temp/"+logfile;

  fstream dataFile2( logfile, ios::in);

  if (dataFile2)
  {

dataFile2.close();
  }
   else
  {
    cout << "ERROR: Cannot open logfile.\n";
   }





    dataFile1.close();
  }
     else
  {
      cout << "ERROR: Cannot open file.\n";
  }
      system("Pause");
     return 0;
    } 

2 个答案:

答案 0 :(得分:0)

我相信你的getline并不打算看新换行,而只看$。您没有发布您正在阅读的文件,但请检查以确保文件名末尾有$,否则它将获取整个文件。

答案 1 :(得分:0)

看来除非你在使用ofstream写入文件后放置\ n或endl,否则ifstream将无法从文件中读取任何内容。事实上,在你写入文件之后添加一个空格也无济于事。

因此,在使用ofstream写入文件的任何内容之后,请务必添加换行符。