std:: setbase
|
Определено в заголовочном файле
<iomanip>
|
||
|
/*unspecified*/
setbase
(
int
base
)
;
|
||
Устанавливает числовое основание потока. При использовании в выражении
out
<<
setbase
(
base
)
или
in
>>
setbase
(
base
)
изменяет флаг
basefield
потока
out
или
in
в зависимости от значения
base
:
-
значение
16
устанавливает
basefieldв std::ios_base::hex . - значение 8 устанавливает std::ios_base::oct .
- значение 10 устанавливает std::ios_base::dec .
Значения
base
отличные от 8, 10 или 16 сбрасывают
basefield
в ноль, что соответствует десятичному выводу и вводу, зависящему от префикса.
Содержание |
Параметры
| base | - | новое значение для basefield |
Возвращаемое значение
Объект неуказанного типа, такой что
-
Если
out
является объектом типа
std::
basic_ostream
<
CharT, Traits
>
, то выражение
out
<<
setbase
(
base
)
- имеет тип std:: basic_ostream < CharT, Traits > &
- имеет значение out
- ведет себя так, как если бы оно вызывало f ( out, base )
-
Если
in
является объектом типа
std::
basic_istream
<
CharT, Traits
>
, то выражение
in
>>
setbase
(
base
)
- имеет тип std:: basic_istream < CharT, Traits > &
- имеет значение in
- ведет себя так, как если бы оно вызывало f ( in, base )
где функция f определена как:
void f(std::ios_base& str, int base) { // установка поля системы счисления str.setf(base == 8 ? std::ios_base::oct : base == 10 ? std::ios_base::dec : base == 16 ? std::ios_base::hex : std::ios_base::fmtflags(0), std::ios_base::basefield); }
Пример
#include <iomanip> #include <iostream> #include <sstream> int main() { std::cout << "Parsing string \"10 0x10 010\"\n"; int n1, n2, n3; std::istringstream s("10 0x10 010"); s >> std::setbase(16) >> n1 >> n2 >> n3; std::cout << "hexadecimal parse: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; s.clear(); s.seekg(0); s >> std::setbase(0) >> n1 >> n2 >> n3; std::cout << "prefix-dependent parse: " << n1 << ' ' << n2 << ' ' << n3 << '\n'; std::cout << "hex output: " << std::setbase(16) << std::showbase << n1 << ' ' << n2 << ' ' << n3 << '\n'; }
Вывод:
Parsing string "10 0x10 010" hexadecimal parse: 16 16 16 prefix-dependent parse: 10 16 8 hex output: 0xa 0x10 0x8
Отчёты о дефектах
Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 183 | C++98 |
setbase
could only be used with streams
of type std::ostream or std::istream |
usable with any
character stream |
Смотрите также
|
изменяет основание системы счисления, используемое для целочисленного ввода-вывода
(функция) |
|
|
управляет использованием префикса для указания системы счисления
(функция) |