QT 无法在初始化时将'std::string'转换为'std::string*'

QT Cannot convert 'std::string' to 'std::string*' in initialization

本文关键字:string std 转换 QT 初始化      更新时间:2023-10-16

我在使用QT c++创建移动程序时遇到了一些问题当我运行它,我得到这个:cannot convert 'std::string' to 'std::string*' in initialization这个错误的代码是:

void rozvrh_b17::pars(string par) 
{ 
    data = new std::string*(par);
    printf(data->data());
}
//data and par are std::string
//without that new std::string*() it does similiar error

我问如何转换std::string到std::string* ??

编辑:我使这个函数传输数据从一个形式到另一个,我需要记住参数…

我给你投了反对票,因为这个问题显示出你没有做任何研究。

string * data = ∥

std::string*是指针类型。你有一个std::string,它的地址是你想要的指针类型。这是使用指针的首要原则之一

你真正想做的是什么?

如果你只是想打印字符串,那么这个应该可以工作:

void rozvrh_b17::pars(string par) 
{ 
    printf(par.c_str());
}

如果你想在堆上创建一个string的副本,那么你需要这样做:

std::string* data = new std::string(par);

但是这没有多大意义

您正在尝试将一个字符串从指针分配给字符串。在这个特殊的例子中,我看到了几个东西。

  1. 您根本不需要副本-只需立即使用par

  2. 你最好做一个const ref: void rozvrh_b17::pars(const string& par)

  3. 在调用new时应该只使用string,否则会创建一个指向string的指针。data = new std::string(par);