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

Mau*_*ice 1 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;
}
Run Code Online (Sandbox Code Playgroud)

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

编辑

我用BRIGHTNESS_FILE修复了整个定义事物,但它仍然无法打开.为了安全起见,我多次检查了路径.

Ben*_*ley 5

我假设你没有一个名为的文件"BRIGHTNESS_FILE".因为这是您尝试打开的文件名.删除引号以使用宏定义的字符串.

ifstream brightness_file(BRIGHTNESS_FILE);
Run Code Online (Sandbox Code Playgroud)


Mat*_*jek 5

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

#define BRIGHTNESS_FILE "/sys/class/backlight/radeon_b10/brightness"
Run Code Online (Sandbox Code Playgroud)

但是根本不要使用它:

ifstream brightness_file("BRIGHTNESS_FILE");
Run Code Online (Sandbox Code Playgroud)

"BRIGHTNESS_FILE"一个字符串-它无关,与你的宏.这就是为什么它的内容不会被预处理器取代的原因.

你需要的是:

ifstream brightness_file(BRIGHTNESS_FILE);
Run Code Online (Sandbox Code Playgroud)

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