1

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

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

谢谢

在 transfersubs.cfg 中有这个 roma-3-4.log

* *在目录 c:/temp/ 我有以下文件 roma-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;
    } 
4

2 回答 2

0

我相信您的 getline 不会费心寻找换行符,而只是为了 $. 您没有发布正在读取的文件,但请检查以确保文件名末尾有 $ ,否则它将获取整个文件。

于 2013-04-11T16:47:46.993 回答
0

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

因此,请始终在使用 ofstream 写入文件后立即添加换行符。

于 2015-11-23T10:51:48.247 回答