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

Why won't ifstream open this file?

#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" 的文件。因为那是您要打开的文件名。删除引号以使用您的宏定义字符串。

ifstream brightness_file(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”并且您的文件应该可以正确打开(当然,如果它存在并且可以访问)。