android中rapidxml读取xml出错求指导orz!!!

在win7下是可以正常运行的,但是一放到安卓环境下就会出错,经过调试,发现在rapidxml读取文件的时候就已经出错了。

file(const char *filename)
{

        using namespace std;
        // Open stream
        basic_ifstream<Ch> stream(filename, ios::binary);
        if (!stream)
            throw runtime_error(string("cannot open file ") + filename);
        stream.unsetf(ios::skipws);


       //。。。。。。省略。。。

}

以上是rapidxml中的代码。
basic_ifstream读取文件的时候就读不到,然后就抛错了。
我有研究过是否路径问题,但是同一样的路径,用cocos自己的读取plist文件的函数是能正常读取。
求大神指导!!!!

CCFileUtils::sharedFileUtils()->fullPathForFilename(filename);

这个用过了

找到问题了,我用cocos内置的tinyxml也读取不了,后来找到压缩包里面的文件是没法直接读取的,只能通过字节流来读取文件。
tinyxml2::XMLDocument *pDoc = new tinyxml2::XMLDocument();

unsigned char* pBuffer=NULL;
unsigned long bufferSize=0;
pBuffer=CCFileUtils::sharedFileUtils()->getFileData(config_url.c_str(), "r", &bufferSize);
if(pBuffer)
{
    pDoc->Parse((const char*)pBuffer);
}

这样是可以读取成功的。
但是rapidxml怎么读取字节流,还在研究中

我也遇到相同的问题,可否留个qq一起交流?

知道了,你的xml因为到安卓上在一个zip包里面,直接用文件当然找不到了,这时候一般有两种思路,一种是用getFileData用字节读,还有一种办法把xml复制出来(可以写在java的mian里面,在程序加载前),然后可以直接用文件读

时隔多日,我发现还有问题,用getFileData能够正常读取xml,然后用tinyxml是可以正常解释的,但是如果用rapidxml解释的话会出错,因为rapidxml要求‘\\0’的字符来结尾,我发现getFileData获取出来的函数多几个字节。
我复制一下上面那段代码
unsigned char* pBuffer=NULL;
unsigned long bufferSize=0;
pBuffer=CCFileUtils::sharedFileUtils()->getFileData(config_url.c_str(), \“r\”, &bufferSize);
if(pBuffer)
{
pDoc->Parse((const char*)pBuffer);
}

我直接对pBuffer置0,发现在windows下可以运行,
但是在android下就不定期奔溃,应该是对不是自己的内存做了操作。
难道只能用tinyxml了?求大神指导。。。有技术讨论群的可以啦我,123515696.谢谢