【问题标题】:ifstream does not work in Xcode?ifstream 在 Xcode 中不起作用?
【发布时间】:2013-03-22 17:23:15
【问题描述】:

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

项目不显示任何错误,会编译,但是每次都会说不能访问文件。

额外的头文件“simpio.h”和“console.h”只是stanford 提供的库。

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

任何帮助都会很棒!谢谢!

【问题讨论】:

  • 您是否在与您要查找的文件相同的目录中启动程序?
  • 你这是什么意思?该程序和所有文件都在同一个项目文件夹中。
  • ifstream 肯定不能“在 Xcode 中”工作。它适用于标准库、您的程序等。类提供的功能仅取决于类,而不取决于 IDE、天气或邻居猫的当前情绪……
  • 什么是getLine()?我看到您在 countLines 方法中使用了getline(in, line)。你确定它有效吗?您应该打印出s 以查看它是否正确读取。
  • 这已经被问过了here

标签: c++ ifstream


【解决方案1】:

你有两个选择:

1) 使用 Objective-C++(去掉 .m 扩展名并替换为 .mm)

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

GLIBCXX_DEBUG=1 
GLIBCXXDEBUGPEDANTIC=1

在预处理器宏中。

旧版 Xcode: ! 较新的 Xcode:

!

示例代码:

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

【讨论】:

  • 我去了那个区域,该字段已经是空白的。所以我什至没有要删除的东西。有什么想法吗?
  • 是的,对不起,我打错了,你必须添加它们(上面写着多个值或类似的东西)
  • 我无法访问该宏字段来编辑/插入您提供的文本。为了让它工作,我需要做些什么特别的事情?
  • 为什么不能访问它?只需双击并单击左下角的 + 即可添加值
  • 双击它时没有任何反应。没有字段可供我输入或添加。我唯一能做的就是向下箭头,然后显示“调试”。
【解决方案2】:

如果你不想弄乱 Xcode 中的任何东西,担心会破坏其他设置,请执行以下操作:

一旦您构建并运行您的控制台程序或应用程序,请转到通常位于项目布局左侧的文件列表,找到“项目”目录,右键单击或选项单击并选择“显示在查找器中”。这是 Xcode 每次为特定项目运行它时转储构建的地方。每个工作区都有自己的构建文件夹。你应该在那里找到你选择或创建的文件,如果你想在那里添加你自己的文件,只需拖动它,然后你可以从你的控制台或应用程序中调用它:myfile.open("file.txt");

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

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

【讨论】:

    【解决方案3】:

    http://kentarotanaka.com/how-to-read-input-file-for-c-in-xcode/

    将文本文件移动到工作区的项目目录会有所帮助,如上述链接所述。

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 2015-10-22
    • 2011-10-12
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多