当我调试这个时,我可以看到它打开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;
}
答案 0 :(得分:0)
我相信你的getline并不打算看新换行,而只看$。您没有发布您正在阅读的文件,但请检查以确保文件名末尾有$,否则它将获取整个文件。
答案 1 :(得分:0)
看来除非你在使用ofstream写入文件后放置\ n或endl,否则ifstream将无法从文件中读取任何内容。事实上,在你写入文件之后添加一个空格也无济于事。
因此,在使用ofstream写入文件的任何内容之后,请务必添加换行符。