-2

我在使用 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* ??

编辑:我做了这个函数来将数据从一种形式传输到另一种形式,我需要记住那个参数......

4

3 回答 3

2

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

string * data = ∥

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

于 2013-03-19T15:24:19.633 回答
0

你真的想做什么?

如果您只想打印字符串,那么这应该可以:

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

如果你想在堆上创建一个字符串的副本,那么你需要这个:

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

但这没有多大意义。

于 2013-03-19T15:25:10.267 回答
0

您正在尝试从指向字符串的指针分配字符串。在这种特殊情况下,我看到了几件事。

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

  2. 您最好将 par 设为 const ref:void rozvrh_b17::pars(const string& par)

  3. 你应该只使用stringwhaen 调用 new 否则你创建一个指向字符串的指针。这样做:data = new std::string(par);

于 2013-03-19T15:25:26.280 回答