【发布时间】:2017-05-27 05:09:30
【问题描述】:
在您投反对票之前,请仔细阅读,它确实很有趣。基本上,我想将类型 char 数组转换为 std::string 以使用 std::bitset 操作,但是当我尝试在运行时创建 bitset 对象时,出现此错误。
在抛出 'std::invalid_argument' 的实例后调用终止 what(): bitset::_M_copy_from_ptr 中止(核心转储)
这是代码
#include <iostream>
#include <cstdlib>
#include <bitset>
int main()
{
char BYTE_4[4] = { 1, 0, 0, 0};
std::string str_BYTE_4 = std::string(BYTE_4);
std::bitset<32> str_BYTE_4_bit( str_BYTE_4);//crash here
std::cout<<"str_BYTE_4_bit. "<<str_BYTE_4_bit<<std::endl;
return 0;
}
我还尝试使用std::stringstream 以及char 和std::string 的指针进行一些其他类型的转换,无论我将什么传递给std::bitset 构造函数,我都会得到相同的错误?
这些只是我从上面的代码中注释掉并删除的 sn-ps,以显示我尝试过的内容。
//char* BYTE_4 = new char[4];
//std::stringstream SS;
//std::string str_BYTE_4 = "0101";
//SS << BYTE_4;
//str_BYTE_4 = SS.str();
//for(int index = 0; index < 4; index++)
// str_BYTE_4 += BYTE_4[index];
//std::string *str_BYTE_4 = new std::string[4];
//for( int index = 0; index < 4; index++)
// BYTE_4[index] = rand()%255;
【问题讨论】:
-
字符串应该包含字符
'0'和'1',而不是整数0和1。
标签: c++ string char type-conversion bitset