Я хочу преобразовать бит в строку. Visual Studio 2008 содержит недопустимое исключение нулевого указателя.преобразовать бит в строку C++
Возможно, это имеет какое-то отношение к размеру массива. это должно быть 8, но выход говорит, что это 4, но почему?
class Converter
{
public:
string bitfieldToString (bool b_input[])
{
string c_conv;
int i;
for(i = 0; i < sizeof(b_input) ; i++)
{
if(b_input[i]=false){
c_conv.append("0");
}
else if (b_input[i]=true){
c_conv.append("1");
}
else c_conv = "Input is not a bitfield";break;
}
cout<<c_conv<<" "<< sizeof(b_input)<<endl;
return (0);
}
};
int main(void)
{
Converter converter;
bool b2[8] = {0,1,0,0,1,0,1,1};
converter.bitfieldToString(b2);
return (0);
}
Спасибо! Теперь все работает по назначению. и извините за этот вопрос. Я новичок в C++.
SizeOf (BOOL []), которые должны быть SizeOf (* BOOL), когда я не укомплектовать неправильно это 4 байта на 32-битной платформе. – user743414
Самый простой способ сделать это - использовать один или несколько 'std :: bitset' и [' std :: bitset :: to_string() ') (http://en.cppreference.com/w/cpp/ utility/bitset/to_string). –
'sizeof (b_input)' Это не работает. Передайте размер массива в качестве параметра или используйте 'std :: vector' –