QT 无法在初始化时将'std::string'转换为'std::string*'
QT Cannot convert 'std::string' to 'std::string*' in initialization
我在使用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);
但是这没有多大意义
您正在尝试将一个字符串从指针分配给字符串。在这个特殊的例子中,我看到了几个东西。
-
您根本不需要副本-只需立即使用par
-
你最好做一个const ref:
void rozvrh_b17::pars(const string& par)
-
在调用new时应该只使用
string
,否则会创建一个指向string的指针。data = new std::string(par);
相关文章:
- cppcheck在const std::string[]上引发警告
- 将std::string传递给WriteConsole API
- 为std::string的某个索引赋值
- std中有类似find_last_of的函数,而string中没有
- 使用 std::string () const 函数启动线程或未来
- 当我们进行一些操作时,应该使用什么'std::string'或'std::stringstream'?
- 如何更改大小(std::string)
- std::string 的对象真的可以移动吗?
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- 无法从 std::string 中提取C++ Unicode 符号
- std::string 构造函数如何处理固定大小的 char[]?
- 确切地说,如何解释 std::getline(stream, string) 函数在C++中填充的字符串
- C++:考虑C++ std::string 中双引号 (") 的字面含义,而不使用反斜杠 (\)
- 'int main(int, int, std::__cxx11::string, std::__cxx11::string)'只需要零或两个参数 [-Wmain]
- C++ 在列表和列表之间选择返回类型<<string>std::p air<string,string>>
- std::string, std::wstring and UTF8
- uan inplace replacement of std::string/std::wstring?
- #define Glib::string std:wstring
- 从 std::string & std::wstring 中获取 char 整数值
- BSTR转换为std::string(std::wstring),反之亦然