Форум программистов, компьютерный форум CyberForum.ru

Вывод строки в виде hex-последовательности - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 18, средняя оценка - 4.83
Selendis
1 / 1 / 0
Регистрация: 15.02.2011
Сообщений: 43
25.02.2011, 01:19     Вывод строки в виде hex-последовательности #1
Добрый день, собственно есть задача вывести строку в виде hex последовательности.
Насколько я понимаю, обычно смотрится - записано ли число в строке и если да, то оно выводится, на простом С это было бы какой-нибудь функций atoi.

Я вот нарыл такой код и никак не могу его понять.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <string>
#include <sstream>
#include <iostream>
 
template <class T>
bool from_string(T& t, 
                 const std::string& s, 
                 std::ios_base& (*f)(std::ios_base&))
{
  std::istringstream iss(s);
  return !(iss >> f >> t).fail();
}
 
int main()
{
  int i;
  float f;
  
  // the third parameter of from_string() should be 
  // one of std::hex, std::dec or std::oct
  if(from_string<int>(i, std::string("ff"), std::hex))
  {
    std::cout << i << std::endl;
  }
  else
  {
    std::cout << "from_string failed" << std::endl;
  }
  
  if(from_string<float>(f, std::string("123.456"), std::dec))
  {
    std::cout << f << std::endl;
  }
  else
  {
    std::cout << "from_string failed" << std::endl;
  }
  return 0;
}
В частности, что вот здесь происходит - return !(iss >> f >> t).fail(); ? Просто проверяется, число ли это? Можно поподробнее рассказать...

И подскажите, а то я что-то не пойму - здесь во время вызова функции поток переводится в hex вид std::hex() ?

И как бы вы мне наиболее топорно ткнули код - в стиле
C++
1
   std::cout << std::hex << f << std::endl;
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2011, 01:19     Вывод строки в виде hex-последовательности
Посмотрите здесь:

[BMP] HEX (из HEX-редактора) в DEC C++
Вывод последовательности, определяющий, являются ли простыми/совершенными соответствующие элементы введённой последовательности C++
Вывод строки на экран с использованием esp-последовательности C++
C++ Как из строки достать hex в int
C++ Каким образом зашифровать Hex строки
C++ Вывести на экран матрицу порядка n (n=1..15) - элементы выводятся не в виде матрицы, а в виде строки
Если HEX одного файла заменить на HEX другого, то изменится ли файл и будет ли работоспособным? C++
C++ Записать в файл все числа от нуля до 2^16 в hex-виде

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
25.02.2011, 01:34     Вывод строки в виде hex-последовательности #2
Selendis, Проверяется число-ли это. Не было ли ошибки считывания если точнее.
Если не было - число.
Если было - не число.

Добавлено через 2 минуты
А ткнул бы так например...
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    std::string str;
    int some=0;
    std::cin>>str;
    std::istringstream ist(str);
    ist >> some;
    std::cout<<std::hex<<some<'\n';
    return 0;
}
Yandex
Объявления
25.02.2011, 01:34     Вывод строки в виде hex-последовательности
Ответ Создать тему
Опции темы

Текущее время: 17:18. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru