我被這個簡單的問題困住了。我讀的文本文件C++:無法讀取C++中的文本文件
std::ifstream stream;
stream.open(filename);
if (!stream)
cout << "Invalid stream" << endl;
而且!stream
是真實的,但似乎有什麼不妥的文本文件。在什麼情況下stream
可能是假的?
注: IS_OPEN返回true
我被這個簡單的問題困住了。我讀的文本文件C++:無法讀取C++中的文本文件
std::ifstream stream;
stream.open(filename);
if (!stream)
cout << "Invalid stream" << endl;
而且!stream
是真實的,但似乎有什麼不妥的文本文件。在什麼情況下stream
可能是假的?
注: IS_OPEN返回true
此代碼的工作對我來說:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
int main()
{
std::ifstream infilestream;
std::string line;
infilestream.open("test.txt");
while(infilestream)
{
std::getline(infilestream, line);
cout<<line<<"\n";
}
infilestream.close();
return(0);
}
機會是你的文件無法訪問,或者您可能沒有足夠的權限訪問該文件。
也許它在別的地方打開?檢查文件的路徑是否正確。
您還沒有提供足夠的信息。儘管如此,我的通靈能力卻揭示出:
filename
是一個相對路徑,並且您當前的工作目錄不是您認爲的那樣。
裏面你if
條款,通過std::cout
打印之前,補充一點:
perror(filename.c_str());
is_open()返回true,所以對於使用perror的文件名 –
+1沒有問題 –
@dr_rk - http://SSCCE.ORG。 –
檢查'IS_OPEN()'。你確定,'filename'是正確的文件路徑,或者,如果它只是一個文件名 - 是同一個目錄中的文件,就像exe文件一樣?對於這樣的問題,你必須檢查文檔.. –
發佈更多代碼和項目的目錄結構 –
'is_open()'返回true –