【问题标题】:Why won't ifstream open this file?为什么 ifstream 不打开这个文件?
【发布时间】:2015-07-26 01:59:37
【问题描述】:
#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 修复了整个定义,但它仍然无法打开。为了安全起见,我已经多次检查了路径。

【问题讨论】:

  • /sys/class/backlight/radeon_b10/brightness文件的绝对路径吗?
  • 您是要打开"BRIGHTNESS_FILE" 还是"/sys/class/backlight/radeon_b10/brightness"
  • 请不要使用解决方案编辑帖子。答案就是为此。再次回滚。

标签: c++ ifstream


【解决方案1】:

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

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

但根本不要使用它:

ifstream brightness_file("BRIGHTNESS_FILE");

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

你需要的是:

ifstream brightness_file(BRIGHTNESS_FILE);

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

【讨论】:

    【解决方案2】:

    我假设您没有名为 "BRIGHTNESS_FILE" 的文件。因为那是您要打开的文件名。删除引号以使用您的宏定义的字符串。

    ifstream brightness_file(BRIGHTNESS_FILE);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多