2012-03-28 116 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