Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将void*(char*不带\0)转换为std::string_C++_Stl - Fatal编程技术网

C++ 将void*(char*不带\0)转换为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?” 应该有用 “如何将“函数”中的第一个参数更改为

我需要将const void*(指向不带“/0”的c-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);
    ...
}