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

dquis 发布于 2019-03-09 c++ 最后更新 2019-03-09 14:39 0 浏览

当我调试时,我可以看到它打开datafile1,它读取第一行和 在日志文件中,我得到了roma-3-4.log 它更改为c:/temp/roma-3-4.log,但是当我想打开它时,它会失败。我检查了_Mystate = 2。 那是什么意思 谢谢 在transfersubs.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;
    } 
已邀请:

yeum

赞同来自:

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

amagni

赞同来自:

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