纽布在这里。我花了最后4个小时试图解决这个问题。
ifstream突然无法打开文件。 ofstream在写入文件时没有问题。
文件存在,它的内容是ThisIsText
,它在参考目录中,我用系统确认(“dir& pause”)
我尝试过Code :: Blocks和Dev C ++,但我认为他们使用的是相同的编译器(GNU GCC Compiler)。 我尝试使用双反斜杠的完整文件名路径。 我看到人们提到权限,但我不知道如何修补它。 我在Windows 10上。
编辑:我刚刚找到了一个新的编译器(Embarcadero 10.1 AKA Borland),代码可以使用它。我仍然想知道GNU GCC的问题是什么
以下代码跳过else语句:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
int main()
{
string message;
ifstream inputFile;
inputFile.open("File.txt");
if (inputFile.good())
{
inputFile >> message;
cout << message;
system("dir & pause");
}
else
{
cout << "failed to open input file\n";
system("dir & pause");
} return 0;
}
如果有帮助,我在网上找到以下代码并输出,“错误代码= 2” 来自winerror.h,即:ERROR_FILE_NOT_FOUND
#include <windows.h>
#include <iostream>
int main()
{
HANDLE hFile = CreateFile(
"one.txt", // Windows does not case about case
GENERIC_READ,
0, // no sharing
NULL, // default security
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL ); // no file template
if(INVALID_HANDLE_VALUE == hFile)
{
DWORD errCode = GetLastError(); // see winerror.h for meanings
std::cout << "File wouldn't open :-(" << std::endl;
std::cout << "Error code = " << errCode << std::endl;
}
else
{
std::cout << "File opened OK :-)" << std::endl;
CloseHandle(hFile);
}
return 0;
}
PS。我知道using namespace std;
是不好的做法