我正在尝试从.log文件中读取文本。我最初使用它是一个Windows控制台应用程序,但我现在正在尝试使用MFC制作GUI版本。问题是当我将while循环设置为while(file.good())时,它完全跳过循环并且我不确定为什么因为file.open()
没有错误void Conversion::toXml(CString openPath, CString savePath)
{
CString null("/0");
int c = openPath.GetLength(),q=0;
while(q<c)
{
if(openPath[q] == '\\')
{
openPath.Insert(q,'\\');
q++;
}
q++;
}
CStringA charstr(openPath);
const char* oPath((const char *) charstr);
CStringA charstr2(savePath);
const char* sPath((const char *) charstr2);
ifstream openFile;
ofstream savedFile(sPath);
string recText = "";
string temp;
openFile.open(oPath);
while(openFile.good())
{
getline(openFile,temp);
recText = recText + temp;
}
较小的版本(应编译)
#include <iostream>
#include <fstream>
#include <string>
#include "stdio.h"
#include <windows.h>
#include <algorithm>
#include <atlstr.h>
using namespace std;
int main()
{
string recText = "";
string temp;
CString path = "C:\\Users\\name\\Desktop\\2012-08-281.log";
CStringA charstr(path);
const char* oPath((const char *) charstr);
ifstream xmlDoc (oPath);
ofstream finished ("C:\\Users\\name\\Documents\\example3.xml");
while(xmlDoc.good())
{
getline(xmlDoc,temp);
recText = recText + temp;
}
finished<<recText<<endl;
return 0;
}
答案 0 :(得分:0)
问题可能是您在不需要时尝试转义反斜杠,在路径中添加不必要的反斜杠。只有字符串文字才需要转义反斜杠。可能是Windows不喜欢具有多个连续反斜杠的路径。