LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 599|回复: 3

字符串的问题让我好晕啊!!!

[复制链接]
发表于 2004-10-8 18:55:37 | 显示全部楼层 |阅读模式
最近学习qt,字符串实在是弄不明白
      printf("%s",fi->fileName());
打印一个文件名这是好用的,但我拿到qt的insert listboxitem中,
                QString str;
                str = QString(fi->fileName());
                lb1->insertItem( str );
总是报错:
         g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -DQT_SHARED -I/usr/local/qt-x11/mkspecs/linux-g++ -I. -I/usr/include/freetype2 -I../../include -I.moc/release-shared/ -o .obj/release-shared/listboxcombo.o listboxcombo.cpp
listboxcombo.cpp: In constructor `ListBoxCombo:istBoxCombo(QWidget*, const
   char*)':
listboxcombo.cpp:69: no matching function for call to `QString:String(
   <unknown type>)'
../../include/qstring.h:746: candidates are: QString:String(QStringData*,
   bool)
../../include/qstring.h:720:                 QString:String(int, bool)
../../include/qstring.h:409:                 QString:String(const
   std::string&)
../../include/qstring.h:406:                 QString:String(const char*)
../../include/qstring.h:404:                 QString:String(const QChar*,
   unsigned int)
../../include/qstring.h:403:                 QString:String(const
   QByteArray&)
../../include/qstring.h:402:                 QString:String(const QString&)
../../include/qstring.h:401:                 QString:String(QChar)
../../include/qstring.h:838:                 QString:String()
listboxcombo.cpp:49: warning: unused variable `unsigned int i'
make: *** [.obj/release-shared/listboxcombo.o] Error 1


麻烦帮忙看看!为啥啊??
发表于 2004-10-8 21:33:46 | 显示全部楼层
QString str;
str = QString(fi->fileName());
这种代码。。。质量不行阿

你的fi->fileName()返回什么类型阿
为什么报告
listboxcombo.cpp:69: no matching function for call to `QString:String(<unknown type> )'呢
 楼主| 发表于 2004-10-9 07:59:26 | 显示全部楼层
我想应该是一个字符串指针吧,因为用printf("%s",fi->filename())就能打印出来,QSstring也支持指针啊,怎么就是报错ne??
 楼主| 发表于 2004-10-9 08:44:21 | 显示全部楼层
问题解决:
        因为没有好好看QT教程,在QString下有这么一段话:
所有的QString的方法都使用const char *参数,const char *被解释为经典的C风格的以零结尾的ASCII字符串。所以const char *参数为0是合法的。如果const char *不是以零结尾的,结果是不确定的。把经典的C字符串复制到QString的函数将不会复制结尾的0字符。QString的QChar数组(可以通过unicode()返回)通常不以零结尾。如果你需要把QString传递到一个需要C的以零结尾的字符串,请使用latin1()。

在QString(fi->fileName()......)的......加上.lantin1()就好用了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表