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