C++ 将void*(char*不带\0)转换为std::string
我需要将const void*(指向不带“/0”的c-string)转换为std::string 我有功能“功能”: 有一个电话:C++ 将void*(char*不带\0)转换为std::string,c++,stl,C++,Stl,我需要将const void*(指向不带“/0”的c-string)转换为std::string 我有功能“功能”: 有一个电话: ... std::string x("abcd"); function(x.data(), x.size()); ... 如何将“函数”中的第一个参数更改为std::string (我知道这看起来很奇怪。我已经写了一个简单的例子。我想问一下转换的问题。) “如何将“函数”中的第一个参数更改为std::string?” 应该有用 “如何将“函数”中的第一个参数更改为
...
std::string x("abcd");
function(x.data(), x.size());
...
如何将“函数”中的第一个参数更改为std::string
(我知道这看起来很奇怪。我已经写了一个简单的例子。我想问一下转换的问题。)
“如何将“函数”中的第一个参数更改为std::string?”
应该有用
“如何将“函数”中的第一个参数更改为std::string?”
应该可以工作。键入强制转换
void*
并将这两个值传递给std::string
构造函数:
void function(const void* ptr, size_t size)
{
std::string s(static_cast<const char*>(ptr), size);
...
}
void函数(const void*ptr,size\u t size)
{
标准::字符串s(静态投影(ptr),大小);
...
}
键入强制转换void*
并将这两个值传递给std::string
构造函数:
void function(const void* ptr, size_t size)
{
std::string s(static_cast<const char*>(ptr), size);
...
}
void函数(const void*ptr,size\u t size)
{
标准::字符串s(静态投影(ptr),大小);
...
}
我不明白,为什么不直接传递x
并更改原型?void函数(std::string)
?这只是一个愚蠢的示例,但我需要进行此转换。我不能改变原型。我不想写细节和粘贴真正的不可读代码。我想问一下如何进行转换。这只是一个例子。请假设我不能更改原型。我不明白,为什么不传递x
并更改原型?void函数(std::string)
?这只是一个愚蠢的示例,但我需要进行此转换。我不能改变原型。我不想写细节和粘贴真正的不可读代码。我想问一下如何进行转换。这只是一个例子。请假设我无法更改原型。static\u cast
是否能与const void*
一起工作?@πάνταῥεῖ, 是的,只要它一开始就合适(即,不是一个双精度*
或任何东西)。@chris好的,我只是不确定void*
的情况,static\u cast()
当然更可取。static\u cast
是否能与const void*
一起工作?@πῥεῖ, 是的,只要它一开始就合适(即,不是一个double*
或任何东西)。@chris好的,我只是不确定void*
的情况,static\u cast()
当然更可取。Boo代表懒惰的演员。Boo代表懒惰的演员。
void function(const void* ptr, size_t size)
{
std::string s(static_cast<const char*>(ptr), size);
...
}