2012-11-01 82 views
-2

我被這個簡單的問題困住了。我讀的文本文件C++:無法讀取C++中的文本文件

std::ifstream stream; 
stream.open(filename); 
if (!stream) 
    cout << "Invalid stream" << endl; 

而且!stream是真實的,但似乎有什麼不妥的文本文件。在什麼情況下stream可能是假的?

注: IS_OPEN返回true

+0

檢查'IS_OPEN()'。你確定,'filename'是正確的文件路徑,或者,如果它只是一個文件名 - 是同一個目錄中的文件,就像exe文件一樣?對於這樣的問題,你必須檢查文檔.. –

+0

發佈更多代碼和項目的目錄結構 –

+0

'is_open()'返回true –

回答

1

此代碼的工作對我來說:

#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); 

} 
1

機會是你的文件無法訪問,或者您可能沒有足夠的權限訪問該文件。

也許它在別的地方打開?檢查文件的路徑是否正確。

2

您還沒有提供足夠的信息。儘管如此,我的通靈能力卻揭示出:

filename是一個相對路徑,並且您當前的工作目錄不是您認爲的那樣。

裏面你if條款,通過std::cout打印之前,補充一點:

perror(filename.c_str()); 
+0

is_open()返回true,所以對於使用perror的文件名 –

+0

+1沒有問題 –

+0

@dr_rk - http://SSCCE.ORG。 –