Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

for C++ programmers - bitset<?> не работает

Уважаемые господа,
здравствуйте!

Подскажите, пожалуйста, почему на кодовую строку языка С++:

a=(std::bitset<8>) b;
или
a=std::bitset<8> b;

Компилятор реагирует сообщением:
"Error E2034 ...: Cannot convert 'bitset<8>' to 'int' in function main()".

Приведу для наглядности фрагмент листинга:

#include <iostream>
#include <fstream>
#include <cmath>
#include <bitset.h>
#include <cstring>

using namespace std;

int a, b;
.........

int main()
{
...
...
a=(std::bitset<8>) b;
...
...
return 1;
}

Что здесь может не хватать, чтобы bitset<8> смог конвертировать десятичную целую
"b"
в двоичный ряд, длиной "8" битов ...?
--
Если Вы получили мое послание, то я был бы очень признателен Вам за отклик.

С уважением,
nick59 - <nick***@i*****.ru>.

Ответить   Fri, 07 Sep 2007 20:29:14 +0400 (#689774)

 

Ответы:

я в сишке слаб - и выражение bitset<8> вижу первый раз, но как Вы себе
представляете, это будет выглядеть? Так:

int a,b;
b=1;
a=(std::bitset<8>) b;
printf("\d",a);

и результатом вывода должно быть 00000001 ???

как-то странно...

не похоже на С++

Ответить   Sat, 8 Sep 2007 04:39:31 +0500 (#689831)

 

Hello, Namik!

Не очень понимаю задачи, которая стоит, тем не менее вот 2 правильных
варианта:

#include <iostream>
#include <fstream>
#include <cmath>
#include <bitset>
#include <cstring>

using namespace std;

int b, c;
.........

int main()
{
...
...
//1-й вариант т.к. раньше не могла преобразовать std::bitset<8> к int
std::bitset<8> a=(std::bitset<8>) b;
//2-й вариант - берем первый бит из bitset. В "с" 0 или 1
с = ((std::bitset<8>) b)[0];
...
...
return 1;
}

Ответить   "Vladimir V.Petrov" Mon, 10 Sep 2007 08:50:44 +0300 (#690112)