我正在寻找使用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;
答案 0 :(得分:2)
哇好了 - 你不能将一串文本读成一个char *,你需要先预先分配内存。
第二个char *指针的大小是常量 - 但它指向的数据大小不是
我建议使用std :: string getline调用并避免所有动态内存分配
所以这将是
std::ifstream in("file.txt");
std::string line;
while(getline(in, line))
{
std::cout << line << std::endl;
}
最后,相关路径是代码示例中的最后一个问题: - )