为什么 ifstream 无法打开此文件?

Why won't ifstream open this file?

本文关键字:文件 ifstream 为什么      更新时间:2023-10-16
#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/radon_b10/brightness",你的文件应该正确打开(如果它存在并且是可访问的,当然)。

我假设您没有一个名为"BRIGHTNESS_FILE"的文件。因为这是您要打开的文件名。为了使用宏定义的字符串,请删除引号。

ifstream brightness_file(BRIGHTNESS_FILE);