【问题标题】:Converting QString to std::string* [duplicate]将 QString 转换为 std::string* [重复]
【发布时间】:2013-05-11 00:11:33
【问题描述】:

我该怎么做:


_name__GetAvailable inp;

QString tmp;
inp.From = tmp;

这是 name_GetAvailable 类的定义:

class SOAP_CMAC _name__GetAvailable
{
public:
    std::string *From;  
    std::string *To;    
    struct soap *soap;  
}

我试过这个:

inp.From = tmp.toStdString();

但我收到以下错误:

C:\Qt2\Qt5.0.1\Tools\QtCreator\bin\Ticket\mainwindow.cpp:49:错误: 无法将 'std::string {aka std::basic_string}' 转换为 'std::string* {aka std::basic_string*}' in assignment

【问题讨论】:

  • @sashoalm 那是怎么重复的?如果您阅读该问题,您会发现他已经QString 转换为std::string。他的问题是获得一个指向std::string指针
  • @sashoalm OP 想要 std::string* 而不仅仅是 std::string
  • 如果你有一个std::string,你应该能够从中得到一个指针,或者你应该回去学习C++。
  • 真的。 (但这仍然不会使其重复)
  • 副本适用于来自 Google 搜索的任何人。

标签: c++ qt


【解决方案1】:

如果你想要一个std::string指针,你需要分配一个新的std::string

inp.From = new std::string(tmp.toStdString());

但我真的不明白为什么你需要通过指针来操作std::string

如果OAP_CMAC _name__GetAvailable 是你的,你可以按值操作std::string

class SOAP_CMAC _name__GetAvailable
{
public:
    std::string From;  
    std::string To;    
    struct soap *soap;  
}

否则,别忘了在某个时候deletestd::string* FromTo

【讨论】:

  • 谢谢它的工作我使用 gSOAP 工具包来创建一些头文件和源文件,现在我正在使用它的类和函数,我无法更改它们的定义