无法从文件中读取

Can't read from file

本文关键字:读取 文件      更新时间:2023-10-16

我正试图从.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;
}

问题可能是您试图在不需要反斜杠时转义它,从而在路径中添加了不必要的反斜杠。转义反斜杠只需要用于字符串字面值。可能是Windows不喜欢有多个连续反斜杠的路径