编译错误QT - 无法从类型转换

时间:2017-05-12 18:32:33

标签: c++ linux macos qt gcc

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

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

...错误:无法从类型' std :: string'转换(又名' basic_string,allocator>')指针类型' char *'            printf("保存群集:%s \ n",filename.toStdString());

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

2 个答案:

答案 0 :(得分:1)

printf无法将std::string作为参数处理,而是您必须选择以下其中一项:

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

答案 1 :(得分:0)

当你使用Qt时,

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

不需要任何转换。

您可以直接打印QString

qDebug() << filename;

注意 :您可能需要加入#include <qdebug.h>