c++ - 从 Visual Studio 运行时程序找不到相关文件
问题描述
我正在使用 Visual Studio 2019。我正在执行此过程以尝试从文件中读取数据,但在 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)\
这是一个简单的演示,它实际上是如何工作的:
笔记
我假设您main.cpp
驻留在您的项目目录中,.vcxproj
并且喜欢所在的位置。因此,默认情况下说当前工作目录是您的项目文件 ( .vcxproj
) 所在的位置而不是您的 cpp 文件更正确,因为它们可以放在任何地方。
推荐阅读
- python - 如何打破 Python 上的 while 循环?
- python - isin函数跳过正确值python
- python - 网页抓取未出现在 beatifulsoup 中的元素
- nvidia - Tensorrt python API 设置批量大小
- python - 如何为 python 应用程序设置订阅服务
- javascript - 使用带有 async/await 和 Firebase reauthenticateWithCredential 的 try-catch 未捕获的错误
- java - 以下嵌套 for 循环的 Big-O 类是什么?
- go - 依赖管理和golang包
- html - 如何翻译预定义的谷歌登录按钮中的文本?
- javascript - Javascript 日期时间转换