• 11735阅读
  • 5回复

关于printf()输出QString的问题 [复制链接]

上一主题 下一主题
离线tinglan
 

只看楼主 倒序阅读 楼主  发表于: 2008-12-24
— 本帖被 XChinux 执行加亮操作(2009-01-03) —
    在QT中定义QString s="hi";然后输出printf("%s\n",s);警告:不能通过 ‘...’ 传递有非简单旧数据类型 ‘class QString’ 的对象;调用会在运行时中止  警告:格式 ‘%s’ 需要类型 ‘char*’,但实参 2 的类型为 ‘int’
    请问是什么问题,我的语句有什么问题?
离线xjcook

只看该作者 1楼 发表于: 2008-12-24
QString并不是被printf支持的类型,%s参数输出的是char*
你可以使用printf("%s\n",s.ascii())
或者其他local8Bit    latin1等。
离线tinglan

只看该作者 2楼 发表于: 2008-12-24
引用第1楼xjcook于2008-12-24 09:45发表的  :
QString并不是被printf支持的类型,%s参数输出的是char*
你可以使用printf("%sn",s.ascii())
或者其他local8Bit    latin1等。

我试这转换成char类型,以上三种方式都不对!
离线blueliang
只看该作者 3楼 发表于: 2008-12-24
我更喜欢使用cout输出,附代码

QString s="hi"
std::cout<<qPrintable(QString("s为%1").arg(s))<<std::endl;
离线adang322

只看该作者 4楼 发表于: 2008-12-24
引用第2楼tinglan于2008-12-24 09:53发表的  :
我试这转换成char类型,以上三种方式都不对!


试试:
QString str ;
printf("%s\n", str.toAscii().data()) ;
Linux、C/C++、QT、OpenGL、Linux/Unix socket、Python
离线6楼男生
只看该作者 5楼 发表于: 2008-12-26
我晕  用toStdString()
快速回复
限100 字节
 
上一个 下一个