2013-03-22 26 views
4

我正在尝试使用ifstream处理一些文件。一切看起来都很好,但是当我尝试打开一个文件时,它不起作用。无论我是否尝试输入字符串变量或字符串文字作为名称。我尝试访问的文件与项目位于同一目录中,并且包含内容。ifstream在Xcode中不起作用?

该项目不显示任何错误,并将编译,但它只会说它不能每次访问该文件。

附加标题“simpio.h”和“console.h”只是斯坦福提供的库。

#include <iostream> 
#include "console.h" 
#include "simpio.h" 
#include <fstream> 
#include <string> 
using namespace std; 

int countLines(ifstream & in) 
{ 
    int count = 0; 
    while (true) { 
     string line; 
     getline(in, line); 
     if (in.fail()) break; 
     count++; 
    } 
    return count; 
} 

int main() 
{ 
    ifstream in; 
    while (true) { 
     cout << "Enter name: "; 
     string s = getLine(); 
     in.open(s.c_str()); 
     if (!in.fail()) break; 
     cout << "Couldn't open file, try again!" << endl; 
     in.clear(); 
    } 



    cout << "Num lines = " << countLines(in) << endl; 

    return 0; 
} 

任何帮助将是伟大的!谢谢!

+0

您是否在与您要查找的文件相同的目录中启动该程序? – 2013-03-22 17:27:04

+0

你是什么意思?程序和所有文件都在同一个项目文件夹中。 – Jonathan 2013-03-22 17:28:24

+2

'ifstream'在Xcode中肯定不起作用。它可以在标准库,程序等中使用。类提供的功能仅取决于类,而不取决于IDE,天气或邻居猫的当前情绪...... – 2013-03-22 17:29:18

回答

3

你有两个选择:

1)使用的Objective-C++(除去.M扩展,并与.mm更换)

2)转到项目设置并添加这些值:

GLIBCXX_DEBUG=1 
GLIBCXXDEBUGPEDANTIC=1 

在预处理器宏中。

旧X码: image http://img541.imageshack.us/img541/2034/screenshot20100414at101.png! 较新的Xcode:

image

示例代码:只要你建立和运行很快

#include <iostream> 
#include <fstream> 
#include <string> 

using namespace std; 

int main(int argc, const char * argv[]) 
{ 
    ofstream myfile; 
    myfile.open ("/Developer/afile.txt"); 
     if(!myfile) 
     { 
     std::cout << "ERROR" std::endl; 
     }  
    myfile << "Writing this to a file.\n"; 
    myfile.close(); 
    return 0; 
} 
+0

我去了那个地区,这个领域已经是空白了。所以我甚至没有东西要删除。有任何想法吗? – Jonathan 2013-03-22 17:46:28

+0

是的抱歉,我输入错误,你必须添加它们(它说多个值或谎言) – Jona 2013-03-22 17:51:42

+0

我无法访问该宏字段编辑/插入您提供的文本。为了使它工作,我需要做什么特别的事情? – Jonathan 2013-03-22 18:31:02

2

如果你不想与在Xcode什么乱七八糟的,担心你可能会打破一些其他的设置,做到这一点您的控制台程序或应用程序,通常位于项目布局左侧的文件列表中,找到“Projects”目录,右键单击或选择单击并选择“在Finder中显示”。这是Xcode在每次为特定项目运行时转储您的构建的地方。每个工作区都有自己的构建文件夹。你应该找到你在那里选择或创建的文件,如果你想添加自己的文件,只需拖动它,然后你可以从你的控制台或应用程序调用它:myfile.open(“file.txt”);

或者只是更改项目的工作目录并使用该文件夹,该文件夹可能比/ Developer/Gibberish/Build/Debug/whatever更容易访问。

这使得将代码移植到Win32或其他系统变得很容易,至少对我来说它已经是了。