【问题标题】:Where does Visual Studio search for txt files when conducting file management operations?进行文件管理操作时,Visual Studio 在哪里搜索 txt 文件?
【发布时间】:2010-11-29 15:29:47
【问题描述】:

我知道这是一个菜鸟问题,但我以前使用过 Python,例如,当您只想访问 .txt 文件时,您所要做的就是确保 txt 文件位于同一目录中。我在下面有以下 C++ 代码,但它没有找到我保存在桌面上的 Numbers.txt 文件。我在文件中只有一行 double 类型的数字。我要做的就是找到文件中所有数字的平均值。该程序运行良好,但无法正确打印输出。通过仅打印输出 [0] 查看打印到输出中的内容后,我发现该文件没有将其内容复制到数组中。有人可以帮我解决这个小问题,或者至少为我指出一个好的教程的正确方向吗?

int main() {
    cout << "Getting File Information..." << endl;
    ifstream file;
    char output[100];
    //int x;

    file.open("Numbers.txt", ios::in);    // open file

    cout << "Opened File Successfully ****************" << endl;
    file >> output;              // empty file contents into output
    cout << output;              // print out contents of file
    cout << "Should have printed out results by now" << endl;
    //file >> x;

    file.close();

    return 0;
}

【问题讨论】:

    标签: c++ visual-studio fstream ifstream file-management


    【解决方案1】:

    Visual Studio 在调试模式下运行时将工作目录设置为 YourProjectDirectory\Debug\Bin。如果您的文本文件位于 YourProjectDirectory 中,则需要考虑这种差异。

    最简单的方法是在项目中包含您的文本文件并将其构建操作(在“属性”窗口中)设置为“内容”。

    【讨论】:

    • 您说的是 C# 或 VB.Net 而不是 C++
    • 也许答案需要修改,我也有同样的问题,但我没有在 VS2015 的 \Debug 下找到 \Bin 子文件夹。幸运的是,第二种方法仍然有效。
    【解决方案2】:

    我也遇到了同样的问题,但我没有找到任何有效的答案。然后我想起了很久以前在 OOP 中学到的东西。 您需要做的是在桌面上获取该文本文件,并在您的计算机文档中的 Visual Studio 项目中找到项目文件夹,然后将文本文件放在 Visual Studio 外部的该文件夹中。然后在源文件下的Visual Studio中,右键单击->添加现有项目->(您的文本文件)

    :)

    顺便说一句,我碰到了这个帖子,因为这个帖子说这是个好主意,我希望它更新,以便人们在谷歌上搜索同样的问题。 https://meta.stackexchange.com/questions/125965/is-bumping-old-questions-allowed

    【讨论】:

    • 这与 OOP 无关。
    • 应用投入生产时会崩溃和烧毁。
    【解决方案3】:

    如果您正在谈论通过 F5 或 Debug / Start Debugging 在 Visual Studio 调试器中运行代码,您可以通过 Project / Properties / Configuration / Debugging / Working directory 设置程序的工作目录。

    将您的文本文件放在某个目录中,并将工作目录设置为指向该目录。

    【讨论】:

    • 永远不要使用绝对路径。移动到另一台计算机时会中断。
    • 工作目录设置并没有存储在项目文件中,所以这不是问题。
    • 这样想,你将工作目录设置为 c:\somedir 并放置配置文件,将程序移到其他地方它将无法工作正确
    • 这似乎不适用于单元测试项目中的 Visual Studio 2013。也许单元测试项目是特殊的。当我编写需要输入文件的单元测试时,无论我将工作目录属性设置为什么,我总是必须指定相对于可执行文件位置的路径。这很奇怪。我一直认为这也是工作目录属性的目的。事后看来,如果您需要能够在调试器之外运行 exe,那么无论如何使用工作目录属性都是不好的。
    【解决方案4】:

    工作路径为工程目录。

    【讨论】:

    • 至少在 VS C++ 2005 和 6.0 中
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-27
    • 2014-09-11
    • 1970-01-01
    • 2019-02-13
    • 2010-09-25
    相关资源
    最近更新 更多