使用相对路径读取文本文件

时间:2012-01-26 06:31:23

标签: c++ file-io char text-files

我正在寻找使用C ++中的相对路径读取文本文件。目录结构如下:source -> Resources -> Settings -> Video.txt

文件的内容(注意:当然用于测试):

somes*** = 1
mores*** = 2
evenmores*** = 3

根据我的研究,这是可能的。不过,我发现这还没有奏效。例如,当我单步执行调试器时,用于接收逐行文本文件输入的char *line变量始终为常量8值。至于我的理解,char指针可以作为动态的字符数组,你可以重新分配。

为什么我不能读取我的文件?当我尝试执行if ( !videoSettings )时,它返回true,我收到一条错误消息(由我自己创建)。

代码

#ifdef WIN32
    const char *filePath = "Resources\\Settings\\Video.txt";
#else
    const char *filePath = "Resources/Settings/Video.txt";
#endif

    std::ifstream videoSettings( filePath );

    if ( !videoSettings )
    {
        cout << "ERROR: Failed opening file " << filePath << ". Switching to configure mode." << endl;

        //return false;
    }

    int count = 0;

    char *line;

    while( !videoSettings.eof() )
    {
        videoSettings >> line;

        cout << "LOADING: " << *line << "; ";

        count = sizeof( line ) / sizeof( char );

        cout << "VALUE: " << line[ count - 1 ];

        /*

        for ( int i = count; i > count; --i )
        {
            if ( i == count - 4 )
            {

            }
        }

        */
    }

    delete line;

1 个答案:

答案 0 :(得分:2)

哇好了 - 你不能将一串文本读成一个char *,你需要先预先分配内存。

第二个char *指针的大小是常量 - 但它指向的数据大小不是

我建议使用std :: string getline调用并避免所有动态内存分配

所以这将是

std::ifstream in("file.txt");
std::string line;
while(getline(in, line))
{
    std::cout << line << std::endl;
}

最后,相关路径是代码示例中的最后一个问题: - )