2012-03-28 87 views
0

每當我嘗試使用ifstream打開文件時,它編譯得很好,但不會打開文件。 這個例子中的文件不存在,但ifstream * s *應該爲我創建文件。C++ ifstream不會打開任何文件

我有一些示例代碼,我認爲應該工作,但不打開或創建文件 「foo.txt」。有什麼,我錯過了,或者是我的IDE只是搞砸了? 我使用Visual Studio 2008的VC++,順便說一句

感謝

下面的代碼:

#include <stdio.h> 
#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main(){ 
    ifstream in; 
    string hold; 
    in.open("foo.txt",ios::in); 
    if(!in){ 
     cerr << "Couldn't open file!" << endl; 
    } 
    in >> hold; 
    cout << hold << endl; 
    system("pause"); 
    return 0; 
} 
+0

它應該?人力資源管理。即使它創建了您的輸入文件,您希望從文件中提取什麼內容? – mkb 2012-03-28 01:49:23

+0

您是否檢查確保路線良好?嘗試使用完整路徑?另外,儘管可能並不重要,但可以使用'if(!in.good())' – Lander 2012-03-28 01:51:07

+6

*輸入*流不會創建文件。 – 2012-03-28 01:51:21

回答

1

是您正在使用的問題的在流,而不是一個輸出流,正如亞當利斯提到(ios::out而不是ios::in)。您還需要確保在return 0;之前關閉該文件,以確保緩衝區中的所有內容都實際寫入文件。

+1

只有當它是'ofstream'時纔會這樣嗎? – Lander 2012-03-28 01:51:58

+1

The OP的代碼似乎沒有寫入'in'。 – 2012-03-28 01:52:08

+0

@Lander你可能實際上是正確的,我傾向於讓我的ifstream和ofstream混合起來 – 2012-03-28 01:53:29

1

open函數不會在ios::in模式下創建文件;你需要使用ios::out