【问题标题】:getline() not opening text filegetline() 没有打开文本文件
【发布时间】:2015-07-08 21:23:47
【问题描述】:

您好,我目前在 OSX 上使用 CodeBlocks 13.12。

我正在尝试打开以下 .txt 文件

第 1 行
第 2 行
第 3 行

我的代码只是:

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

using namespace std;

int main()
{
    cout<<'\n';
    std::string line;
    ifstream myfile("textex.txt");
    if(myfile.is_open())
        cout << "File is open";
    else
        cout << "File not open";

    cout<<'\n';
    return 0;
}

我也将文件包含在项目文件夹中,并尝试链接并编译它。

当我运行代码时,它显示“文件未打开”,我不知道为什么? 我是 C++ 新手,有人可以解释为什么这不起作用吗?

【问题讨论】:

  • 链接和编译任意 .txt 文件?靠猜测编程是行不通的:)
  • 使用getcwd() 显示应用程序认为它正在运行的目录。

标签: c++ codeblocks getline


【解决方案1】:

可能是因为项目文件夹没有设置为工作目录。尝试指定完整路径。

【讨论】:

  • 我尝试将其更改为ifstream myfile("/Users/name/Code/textex.txt");,但仍然输出“文件未打开”
【解决方案2】:

代替

    ifstream myfile("textex.txt");

试试

    ifstream myfile;
    myfile.open("/Users/name/Code/textex.txt"); // Use the full path

【讨论】:

    【解决方案3】:

    尝试输入文件的完整路径,而不仅仅是文件名。 告诉我接下来会发生什么。

    在另一个无关紧要的注意事项上,由于您使用的是“使用命名空间”指令,因此您也可以像使用 cin 和 cout 一样从字符串中省略 std::。没什么大不了的,看代码就行了。

    【讨论】:

    • 我尝试将其更改为 ifstream myfile("/Users/name/Code/textex.txt");但它仍然输出“文件未打开”
    • 我不认识人。我没有 OSX,所以我不知道这是否是编写路径的正确方法。
    • 我有一个想法尝试创建一个输出文件,然后将其作为输入重新打开。程序应该在它可以读取的位置创建它。 ofstream myout("test.txt"); myout &lt;&lt; "test"; myout.close(); ifstream myfile("test.txt"); 然后编写相同的 if 语句。我知道我没有测试输出文件是否打开,只是说它现在可以正确打开。
    【解决方案4】:

    当您从 Code::Blocks 运行程序时,它会在项目文件夹中运行,因此您的文本文件必须在项目文件夹中,否则文本文件必须在可执行文件所在的文件夹中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      相关资源
      最近更新 更多