转换void *(char * without \ 0)到std :: string

时间:2014-09-23 22:25:18

标签: c++ stl

我需要将const void *(指向不带'/ 0'的c-string)转换为std :: string。

我有功能“功能”:

void function(const void* ptr, size_t size);

有一个电话:

...
std::string x("abcd");
function(x.data(), x.size());
...

如何在'function'中将第一个参数更改为std :: string?

(我知道它看起来很奇怪。我写了一个简单的例子。我想问一下转换。)

2 个答案:

答案 0 :(得分:8)

void*进行类型转换,并将两个值都传递给std::string构造函数:

void function(const void* ptr, size_t size)
{
    std::string s(static_cast<const char*>(ptr), size);
    ...
}

答案 1 :(得分:3)

  

&#34;如何在&#39;功能&#39;?&#34;

中将第一个参数更改为std :: string
void function(const void* ptr, size_t size) {
    std::string str((const char*)ptr,size);
}

应该有用。