我创建一个不是零终止的常量char变量pStr
:
const unsigned char* pStr
我需要将它分配给std :: string
目前我正在使用
std::string s((char *)(pStr));
我也尝试过使用
std::string s(reinterpret_cast<const char *>(pStr));
我收到此错误"Segmentation fault (core dumped)"
感谢您的帮助。提前谢谢。
答案 0 :(得分:2)
如果pStr
指向的数组根据具有零值字符的C约定终止,那么你的狡猾的强制转换应该有效。
如果不是,那么你需要一些其他的方法来确定字符串的长度。一旦知道了,就可以从指针范围初始化字符串:
std::string s(pStr, pStr+length);
答案 1 :(得分:0)
这是一个正确的表达
std::string s(reinterpret_cast<const char *>(pStr));
转储的原因是指针无效,例如它等于NULL或它指向的字符串文字没有终止零。
答案 2 :(得分:-1)
Class A
{
public : std::string myFunc( const unsigned char* a)
{
std::string s((char *)(a));
return s;
}
};
int main()
{
A sm;
cout<< sm.myFunc((const unsigned char*)"abc");
}