Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Работа с потоками ввода вывода и манипуляторами


Автор: np9mi7 22.12.2005, 14:50
Добрый день!

Есть код:
Код


#include <sstream>
#include <windows.h>

int main(int argc, char* argv[])
{

    BYTE    byValue;

    std::istringstream stream ("A0");

    stream >> std::hex >> byValue;

    return 0;
}


После его выполнения хотелось бы, что бы byValue = 0xA0, а оно byValue = 0x0A

Может подскажите, что не так?

Заранее благодарен за ответы.

Автор: chaos 22.12.2005, 15:07
смотря что ты хочешь?
если конвертировать строку в число при этом поменять сист. счисления то так
Код

void main()    
{
    int byValue = 0;
    istringstream stream ("FF");
    stream >> hex >> byValue;
    cout << byValue;    //255
}



PS поменяй тип у своего byValue

Автор: np9mi7 22.12.2005, 15:12
Это ещё зачем? Мне нужен именно байт...

Автор: LPBOY 22.12.2005, 15:19
BYTE это unsigned char поэтому он пытается считать символ, а не число! Вот он и считывает A.

Автор: chaos 22.12.2005, 15:20
np9mi7 ты хочешь конвертировать строку в число при ээтом поменять счисление на 10 ?

Автор: np9mi7 22.12.2005, 15:27
Цитата
np9mi7 ты хочешь конвертировать строку в число при ээтом поменять счисление на 10 ?
, да пичем строка это байт в HEX;

Автор: np9mi7 22.12.2005, 16:02
Код

template<class _Traits> inline
    basic_istream<char, _Traits>& __CLRCALL_OR_CDECL  operator>>(
        basic_istream<char, _Traits>& _Istr, unsigned char& _Ch)
    {    // extract an unsigned char
    return (_Istr >> (char&)_Ch);
    }
, вот оно в чем дело, LPBOY Вы правы

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)