• 4350阅读
  • 2回复

急!!!!QString转换成char*总是时不时有问题呀? [复制链接]

上一主题 下一主题
离线ch19860304
 
只看楼主 倒序阅读 楼主  发表于: 2009-08-07
class Musicplayer :public QWidget
{    
    private:
        QString musicName ;
        QString musicPath ;

};


Musicplayer::Musicplayer()
{

    musicDir.setPath("/home/apple/project/qt_music") ;
    
    QStringList filter ;
    filter << "*.wav" << "*.mp3" << "*.aiff" << "*.mod"  ;
    musicList = musicDir.entryList(filter, QDir::Files|QDir::NoSymLinks, QDir::Name) ;
    
    musicName = musicList.at(0);
    musicPath = musicDir.absolutePath() +"/"+ musicName ;

    qDebug() << "musicPath = " << musicPath ;   //结果:musicPath =  "/home/apple/project/qt_music/808-clap.wav"
    qDebug() << "musicName = " << musicName ;   //结果:musicName =  "808-clap.wav"

}

int Musicplayer::musicplay()
{
    /*第一组数据及结果*/
    const char *source = musicPath.toAscii().data();
    qDebug() << "musicPath = " << musicPath ;    //结果:musicPath =  "/home/apple/project/qt_music/808-clap.wav"
    qDebug("source = %s!", source);        //结果:source = /home/apple/project/qt_music/808-clap.wav!
    
    /*第二组数据及结果*/
    QString current = "/home/apple/project/mix_player/qt1" ;
    const char *dest = current.toAscii().data();    
    qDebug() << "current = " << current ;    //结果:current =  "/home/apple/project/mix_player/qt1"
    qDebug("dest = %s!", dest);        //结果(错,很鬼异):dest = hhom!
    
    /*第三组数据及结果*/
    const char *name = musicName.toAscii().data();
    qDebug() << "musicName = " << musicName ;    //结果:musicName =  "808-clap.wav"
    qDebug("name = %s!", name);    //结果:name = 808-clap.wav!
}


这三组数据的位置发生改变,结果就不一样。
第一组总是对的,第二组无论放哪个数据,总是不对。第三组有时对有时不对。总之没有一次是全对的。
这是怎么回事呀?有人知道吗?
离线napier

只看该作者 1楼 发表于: 2009-08-07
debug 一下看看里面是啥
离线gotomall
只看该作者 2楼 发表于: 2009-08-15
const char *source = musicPath.toAscii().data();  这句话有问题。要先给source 分配空间。否则你这样调试结果,自然source 打出来是空的
快速回复
限100 字节
 
上一个 下一个