c++ - 为什么 ifstream 不能打开这个文件?

标签 c++ ifstream

#include <iostream>
#include <fstream>

using namespace std;

#define BRIGHTNESS_FILE "/sys/class/backlight/radeon_b10/brightness"

int main()
{
     ifstream brightness_file("BRIGHTNESS_FILE");
     int a;
     brightness_file >> a;
     cout << a;
}

我已经检查了文件的路径和权限。 我不知道为什么它不会从中读取。

编辑

我用 BRIGHTNESS_FILE 修复了整个定义的东西,但它仍然无法打开。为了安全起见,我已经多次检查路径。

最佳答案

您将 BRIGHTNESS_FILE 定义为常量字符串文字:

#define BRIGHTNESS_FILE "/sys/class/backlight/radeon_b10/brightness"

但根本不要使用它:

ifstream brightness_file("BRIGHTNESS_FILE");

"BRIGHTNESS_FILE" 也是 字符串文字 - 它与您的宏无关。这就是为什么它的内容不会被预处理器替换的原因。

你需要的是:

ifstream brightness_file(BRIGHTNESS_FILE);

现在,BRIGHTNESS_FILE 将更改为“/sys/class/backlight/radeon_b10/brightness”,您的文件应该可以正确打开(当然,如果它存在并且可以访问)。

关于c++ - 为什么 ifstream 不能打开这个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31632915/

相关文章:

c++ - 无法读取 C++ 中的 .list 扩展文件

c++ - seekg、tellg、从零开始的计数和文件大小

c++ - 我无法让我的程序正确读取输入文件中的值(二维数组)

c++ - 我怎么知道 rv 被移动了而不是被复制了?

c++ - 读取内存中的位

c++ - 在 C++ 上读取二进制数据,其中不同的列具有不同的数据类型

c++ - 使用 std::ifstream 而不是文件缓存强制读取磁盘

c++ - 从输入文件到数组的困惑读取

c++ - vector 增长时如何强制执行 move 语义?

c++ - 在注入(inject)的 DLL 中调用函数?