从Visual Studio运行时,程序找不到相对文件

问题描述

我正在使用Visual Studio2019。我正在执行此过程以尝试从文件中读取数据,但是在Visual Studio上我无法读取。它只显示空白屏幕,没有错误等。 然后,我使用了在线ide,但是该程序能够在线读取文件。我不知道这个问题。两者都使用相同的代码

任何帮助将不胜感激。预先谢谢你。

以下是编写的代码

#include <iostream>
#include<fstream>
#include<string>
using namespace std;

int main() {

    ifstream inputfile;
    string name1,name2,name3;

    inputfile.open("names.txt");

    inputfile >> name1;
    inputfile >> name2;
    inputfile >> name3;

    inputfile.close();

    cout << name1 << endl;
    cout << name2 << endl;
    cout << name3 << endl;


    return 0;
}

解决方法

从Visual Studio中运行项目时,当前的工作目录将成为main.cpp所在的位置(请参见末尾的注释),而不是可执行目录。因此,您的程序找不到names.txt,因此找不到您看到的内容。

因此,您可以通过进入Release / Debug目录(取决于要为其构建项目的配置)并执行程序来进行验证。您会看到它将找到该文件,并且可以正常工作。

您可以从Properties\Debugging working directory选项更改工作目录,并将其设置为类似$(SolutionDir)$(Platform)\$(Configuration)\

这是一个简单的演示,实际上它是如何工作的:

enter image description here

注意

我假设您的main.cpp位于.vcxproj等项目所在的项目目录中。因此,更正确地说默认情况下,当前工作目录是项目文件(.vcxproj)所在的位置,而不是cpp文件所在的位置,因为它们可以放置在任何地方。