C++ 使用Visual Studio从运行时,程序找不到相关文件

C++ 使用Visual Studio从运行时,程序找不到相关文件,c++,visual-c++,fstream,C++,Visual C++,Fstream,我正在使用VisualStudio2019。我执行此过程是为了尝试从文件中读取数据,但在VisualStudio上我无法读取。它只显示空白屏幕,没有错误等。 然后我使用了一个在线ide,但是程序能够在线读取文件。我搞不懂这个问题。这是两个系统上使用的相同代码 任何帮助都将不胜感激。先谢谢你 以下是编写的代码: #include <iostream> #include<fstream> #include<string> using namespace std;

我正在使用VisualStudio2019。我执行此过程是为了尝试从文件中读取数据,但在VisualStudio上我无法读取。它只显示空白屏幕,没有错误等。 然后我使用了一个在线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;
}
#包括
#包括
#包括
使用名称空间std;
int main(){
ifstream输入文件;
字符串名称1、名称2、名称3;
inputfile.open(“names.txt”);
输入文件>>名称1;
输入文件>>名称2;
输入文件>>名称3;
inputfile.close();

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

因此,您可以通过进入您的发布/调试目录(取决于您为哪个配置构建项目)并执行您的程序来验证这一点

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

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


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

您是否尝试了类似的特定路径“C:\\names.txt”?如果有效,请检查您的“name.txt”位置,确保正确无误。如果您按f10键并单步执行您的代码,会发生什么情况?对不起,我很傻。我在这方面有点不知所措。所以您的意思是,我现在工作的.cpp就是文件需要的位置(我想从中读取数据)?我确实将该文件移动到了.cpp源文件,但仍然存在相同的问题。您使用的是相对路径,而这种相对性通常与程序的执行位置有关。这称为当前工作目录。基本上,当您运行可执行文件,且程序到达
names.txt
,它将首先在当前工作目录,即运行可执行文件的同一目录。在Visual Studio中运行/调试时,当前工作目录被设置为当前项目目录,即cpp文件所在的目录。因此,当程序尝试查找该文件时,该文件不存在于当前工作目录,即项目目录中您的cpp文件所在的目录。@Rika所说的是正确的。调试时,您可以设置项目的调试选项以设置工作目录。如果将工作目录设置为文件所在的目录,它将打开。否则,编译器的输出默认为将.exe文件放入目录。\debug in relati在.vcxproj文件上。(通常)由于exe和txt文件不在同一个目录中,它将始终失败。我还需要补充一点,我的假设是您的.cpp文件位于项目文件旁边。@JosephWillcoxson实际上提出了一个非常好的观点,并且是正确的。我更新了答案,以反映这一点,并消除简化可能带来的任何混乱.