c++ - C ++ fstream不会在Windows中打开文本文件
问题描述
我写了一个简单的程序,我需要从文件中读取一些数字。
vector<unsigned long> readFile() {
ifstream dat("primes.txt", ios::in);
vector<unsigned long> praSt;
unsigned long i = 0;
while (dat >> i) praSt.push_back(i);
dat.close();
return praSt; }
我需要从文本文件中读取一些素数并用它们做某些事情。问题是它dat
总是以 NULL 告终。\\
我尝试了一些人推荐的绝对文件路径、相对路径和路径,但没有任何效果。
如果我在 Ubuntu VM 中运行它,它可以工作并且读取文件没有问题。但我习惯于在 Visual Studio (2019) 中进行调试。对于如何解决这个愚蠢的问题,任何和所有的帮助都将非常感激。感谢您的时间。
解决方案
您可以在项目属性的调试选项卡中设置 Visual Studio 的工作目录。
默认值为$(ProjectDir)
。
假设您需要的文件位于当前工作目录中是一种非常危险的做法——它可能会根据您启动程序的方式而改变。您应该使用“众所周知的”路径(如APPDATA
在 Windows 上)或相对于可执行文件的路径(然后您可以在运行时构建该路径)。
推荐阅读
- php - orm关系中如何获取用户信息?
- python - 以“词”分割句子,将多个大写词(假定为专有名词)视为一个
- java - 从电子邮件中修剪域并使值大于 10 时设置为最大 10 位并忽略“。” 如果介于两者之间。我们应该怎么做?
- c# - 使用 C# 泛型和方法链排列测试种子数据
- c# - 部署到使用 Unity 2019.4.12f1 开发的 ARM 设备时的 LiteDB 异常
- amazon-web-services - AWS Amplify:如何使用 API_KEY 进行测试和开发
- javascript - 如何将对象数组展平为多个级别?
- css - 反应现代日历日期选择器与下面的日期选择器输入重叠
- sql - 基于列条目的具有布尔值的 SQL 新列
- rust - `vec!` 什么时候创建不同的元素?