没有读取文件的方法,所有都返回- C++

没有读取文件的方法,所有都返回- C++,c++,file-io,ifstream,C++,File Io,Ifstream,编辑:问题解决了!事实证明,Windows 7不允许我在没有以管理员身份明确运行的情况下读取/写入文件。所以,如果我以管理员的身份运行,效果会很好,如果我没有,我会得到下面解释的奇怪结果 我一直在尝试让我的一个更大的程序的一部分读取一个文件 尽管尝试了多种方法stream::getline、std::getline、使用>>运算符等,但它们都返回/0、空白或随机数/我初始化变量时使用的值 我的第一个想法是该文件不存在或无法打开,但是状态标志.good、.bad和.eof都表示没有问题,并且我尝试

编辑:问题解决了!事实证明,Windows 7不允许我在没有以管理员身份明确运行的情况下读取/写入文件。所以,如果我以管理员的身份运行,效果会很好,如果我没有,我会得到下面解释的奇怪结果

我一直在尝试让我的一个更大的程序的一部分读取一个文件

尽管尝试了多种方法stream::getline、std::getline、使用>>运算符等,但它们都返回/0、空白或随机数/我初始化变量时使用的值

我的第一个想法是该文件不存在或无法打开,但是状态标志.good、.bad和.eof都表示没有问题,并且我尝试读取的文件肯定与debug.exe位于同一目录中,并且包含数据

我最喜欢使用istream::getline将行读入字符数组,但是也可以将行读入字符串数组

我当前的代码如下所示:

    void startup::load_settings(char filename[]) //master function for opening a file.
{

    int i = 0; //count variable
    int num = 0; //var containing all the lines we read.
    char line[5];


        ifstream settings_file (settings.inf);
        if (settings_file.is_open());
        {
            while (settings_file.good())
            {
                    settings_file.getline(line, 5);
                    cout << line;

            }
        }



    return;
}
如上所述,它进行编译,但只是将/0放入char数组的每个元素,就像我尝试过的所有其他方法一样


谢谢您的帮助。

首先,您的代码不完整,什么是settings.inf

其次,很可能你的阅读一切都很好,但你打印的方式很麻烦


这段代码可以处理不同的文件吗?请注意,没有使用参数filename,而是使用settings.inf。是这样吗?请注意,if后面有一个分号,这使它变得无用,并会给人留下文件已成功打开但可能尚未打开的印象。修复此问题以确保文件正在打开:if settings\u file.is\u opensettings.inf是我试图打开并读取的文件。我并没有直接尝试打印输出,一旦文件被读取,它就会被推送到另一个函数,现在打印只是为了调试。虽然我会更好地打印输出。很好,然后检查我的答案中的第1点和第2点,如果仍然有问题,请提供反馈。您的意思是第[4]行=“\0”;。