【问题标题】:Compile Error QT - cannot cast from type编译错误 QT - 无法从类型转换
【发布时间】:2017-10-12 04:01:59
【问题描述】:

我尝试在 QT 上编译一个项目,但显示了很多错误,其中一个在第二行:

QString filename = QFileDialog::getSaveFileName(...
printf("save clustering: %s\n",filename.toStdString() ); // ERROR

... 错误:无法从类型“std::string”(又名“basic_string,分配器>”)转换为指针类型“char *” printf("保存聚类:%s\n",filename.toStdString());

这个项目是在 Linux (gcc 5.2.1) 上构建的,但我转移到了 Mac OS X Sierra (gcc 5.4.0)。我不知道我能做些什么来解决这个问题。谁能帮帮我?

【问题讨论】:

  • 您可能需要调用该字符串的c_str() 函数。但是,您为什么使用printf() 而不是std::cout

标签: c++ linux macos qt gcc


【解决方案1】:

printf 无法将std::string 作为参数处理,您必须选择以下之一:

filename.toLocal8Bit.data()
filename.toLatin1().data()
filename.toStdString().c_str()
filename.toStdWString().c_str()

【讨论】:

    【解决方案2】:

    当您使用 Qt 时,

    您可以使用QDebug 在控制台打印。

    它不需要任何转换。

    您可以直接打印QString

    qDebug() << filename;
    

    注意:您可能需要包含#include &lt;qdebug.h&gt;

    【讨论】:

      猜你喜欢
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-22
      相关资源
      最近更新 更多