ios_base 클래스

이 클래스는 템플릿 매개 변수에 의존하지 않는 입력 및 출력 스트림에 공통적인 스토리지 및 멤버 함수를 설명합니다. (클래스 템플릿은 공통적이고 템플릿 basic_ios 매개 변수에 종속된 내용을 설명합니다.)

클래스 ios_base 의 개체는 다음으로 구성된 서식 정보를 저장합니다.

  • 형식 fmtflags개체의 형식 플래그입니다.

  • 형식 iostate의 개체에 있는 예외 마스크입니다.

  • 형식 int개체의 필드 너비입니다.

  • int 형식의 개체에 있는 표시 자릿수.

  • locale 형식locale의 개체입니다.

  • 형식 longvoid 포인터 요소가 있는 확장 가능한 두 배열입니다.

또한 클래스 ios_base 의 개체는 스트림 상태 정보, 형식 iostate의 개체 및 콜백 스택을 저장합니다.

멤버

생성자

이름 설명
ios_base ios_base 개체를 생성합니다.

Typedef

이름 설명
event_callback 에 전달된 함수를 설명합니다 register_call.
fmtflags 출력의 모양을 지정하는 상수입니다.
iostate 스트림의 상태를 설명하는 상수를 정의합니다.
openmode 스트림과 상호 작용하는 방법을 설명합니다.
seekdir 오프셋 작업에 대한 시작 지점을 지정합니다.

열거형

이름 설명
event 이벤트 유형을 지정합니다.

상수

속성 설명
adjustfield 로 정의된 internal | | leftright비트 마스크입니다.
app 각 삽입 전에 스트림의 끝에 검색을 지정합니다.
ate 해당 제어 개체를 처음 만들 때 스트림의 끝에 검색을 지정합니다.
badbit 스트림 버퍼의 무결성 손실을 기록합니다.
basefield 로 정의된 dec | | hexoct비트 마스크입니다.
beg 시퀀스의 시작을 기준으로 한 검색을 지정합니다.
binary 파일을 텍스트 스트림이 아니라 이진 스트림으로 읽도록 지정합니다.
boolalpha 숫자 값이 아닌 이름(예: truefalse)으로서 bool 형식의 개체를 삽입 또는 추출하도록 지정합니다.
cur 시퀀스 내에서 현재 위치를 기준으로 하는 검색을 지정합니다.
dec 10진수 형식의 정수 값을 삽입 또는 추출하도록 지정합니다.
end 시퀀스의 끝을 기준으로 한 검색을 지정합니다.
eofbit 스트림에서 추출할 때 파일 끝을 기록합니다.
failbit 스트림에서 유효한 필드를 추출하지 못하는 경우를 기록합니다.
fixed 고정 소수점 형식(지수 필드 없음)의 부동 소수점 값을 삽입하도록 지정합니다.
floatfield 로 정의된 비트 마스크 fixed | scientific
goodbit 모든 상태 비트를 지웁니다.
hex 16진수 형식의 정수 값을 삽입 또는 추출하도록 지정합니다.
in 스트림에서 추출하도록 지정합니다.
internal 생성된 숫자 필드의 내부에 있는 점에서 채우기 문자를 삽입하여 필드 너비를 채웁니다.
left 왼쪽 맞춤을 지정합니다.
oct 8진수 형식의 정수 값을 삽입 또는 추출하도록 지정합니다.
out 스트림에 삽입하도록 지정합니다.
right 오른쪽 맞춤을 지정합니다.
scientific 공학용 형식(지수 필드 사용)의 부동 소수점 값을 삽입하도록 지정합니다.
showbase 생성된 정수 필드의 기수를 표시하는 접두사를 삽입하도록 지정합니다.
showpoint 생성된 부동 소수점 필드에서 소수점을 무조건 삽입하도록 지정합니다.
showpos 생성된 음수가 아닌 숫자 필드에 더하기 기호를 삽입하도록 지정합니다.
skipws 특정 추출 전에 선행 공백은 건너뛰도록 지정합니다.
trunc 해당 제어 개체가 만들어지면 기존 파일의 콘텐츠를 삭제하도록 지정합니다.
unitbuf 각 삽입 후 출력이 플러시되도록 합니다.
uppercase 특정 삽입의 소문자에 해당하는 대문자를 삽입하도록 지정합니다.

함수

속성 설명
failure 멤버 클래스는 클래스 템플릿basic_ios에서 멤버 함수가 throw한 모든 예외에 대한 기본 클래스 역할을 합니다.
flags 현재 플래그 설정을 설정하거나 반환합니다.
getloc 저장된 locale 개체를 반환합니다.
imbue 로캘을 변경합니다.
Init 생성될 때 표준 iostream 개체를 만듭니다.
iword iword로 저장할 수 있는 값을 할당합니다.
precision 부동 소수점 숫자에 표시할 자릿수를 지정합니다.
pword pword로 저장할 수 있는 값을 할당합니다.
register_callback 콜백 함수를 지정합니다.
setf 지정된 플래그를 설정합니다.
sync_with_stdio iostream C 런타임 라이브러리 작업이 소스 코드에 표시되는 순서대로 수행되도록 합니다.
unsetf 지정된 플래그가 해제되도록 합니다.
width 출력 스트림의 길이를 설정합니다.
xalloc 변수가 스트림에 포함된다고 지정합니다.

연산자

이름 설명
operator= ios_base 개체에 사용할 대입 연산자입니다.

요구 사항

헤더<ios>:

네임스페이스:std

event

이벤트 유형을 지정합니다.

enum event {
    erase_event,
    imbue_event,
    copyfmt_event};

설명

형식은 등록된 함수에 대한 인수로 사용되는 콜백 이벤트를 저장할 수 있는 개체를 설명하는 열거형 형식입니다 register_callback. 고유 이벤트 값은 다음과 같습니다.

예시

예제는 register_callback을 참조하세요.

event_callback

에 전달된 함수를 설명합니다 register_call.

typedef void (__cdecl *event_callback)(
    event _E,
    ios_base& _Base,
    int _I);

매개 변수

_E
event.

_Base
이벤트가 호출된 스트림입니다.

_I
사용자 정의 숫자입니다.

설명

이 형식은 에 등록할 수 있는 함수에 대한 포인터를 register_callback설명합니다. 이러한 형식의 함수는 예외를 throw하면 안 됩니다.

예시

를 사용하는 event_callback예제를 참조하세요register_call.

failure

failure 클래스는 예외로 throw된 모든 개체의 형식에 대한 기본 클래스를 iostreams 라이브러리의 함수별로 정의하여 스트림 버퍼 작업 중 검색된 오류를 보고합니다.

namespace std {
    class failure : public system_error {
    public:
        explicit failure(
            const string& _Message,
            const error_code& _Code = io_errc::stream);

        explicit failure(
            const char* str,
            const error_code& _Code = io_errc::stream);
    };
}

설명

what()에서 반환된 값은 _Message의 복사본이며, _Code에 기반한 테스트로 확대될 수 있습니다. _Code 지정하지 않으면 기본값은 .입니다make_error_code(io_errc::stream).

예시

// ios_base_failure.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main ( )
{
    using namespace std;
    fstream file;
    file.exceptions(ios::failbit);
    try
    {
        file.open( "rm.txt", ios_base::in );
        // Opens nonexistent file for reading
    }
    catch( ios_base::failure f )
    {
        cout << "Caught an exception: " << f.what() << endl;
    }
}
Caught an exception: ios_base::failbit set

flags

현재 플래그 설정을 설정하거나 반환합니다.

fmtflags flags() const;
fmtflags flags(fmtflags fmtfl);

매개 변수

fmtfl
fmtflags 설정입니다.

Return Value

이전 또는 현재 fmtflags 설정입니다.

설명

플래그 목록을 참조 ios_base::fmtflags 하세요.

첫 번째 멤버 함수는 저장된 형식 플래그를 반환합니다. 두 번째 멤버 함수는 fmtfl을 형식 플래그에 저장하고 이전에 저장된 값을 반환합니다.

예시

// ios_base_flags.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main ( )
{
    using namespace std;
    cout << cout.flags( ) << endl;
    cout.flags( ios::dec | ios::boolalpha );
    cout << cout.flags( );
}
513
16896

fmtflags

출력의 모양을 지정하는 상수입니다.

class ios_base {
public:
   typedef implementation-defined-bitmask-type fmtflags;
   static const fmtflags boolalpha;
   static const fmtflags dec;
   static const fmtflags fixed;
   static const fmtflags hex;
   static const fmtflags internal;
   static const fmtflags left;
   static const fmtflags oct;
   static const fmtflags right;
   static const fmtflags scientific;
   static const fmtflags showbase;
   static const fmtflags showpoint;
   static const fmtflags showpos;
   static const fmtflags skipws;
   static const fmtflags unitbuf;
   static const fmtflags uppercase;
   static const fmtflags adjustfield;
   static const fmtflags basefield;
   static const fmtflags floatfield;
   // ...
};

설명

에서 조작자를 지원합니다 ios.

형식은 서식 플래그를 저장할 수 있는 개체를 설명하는 비트 마스크 형식입니다. 고유 플래그 값(요소)은 다음과 같습니다.

  • dec - 10진수 형식의 정수 값을 삽입 또는 추출합니다.

  • hex - 16진수 형식의 정수 값을 삽입 또는 추출합니다.

  • oct - 18진수 형식의 정수 값을 삽입 또는 추출합니다.

  • showbase - 생성된 정수 필드의 기수를 표시하는 접두사를 삽입합니다.

  • internal - 생성된 숫자 필드의 내부에 있는 점에서 채우기 문자를 삽입하여 필요에 따라 필드 너비를 채웁니다. (필드 너비 설정에 대한 자세한 내용은 를 참조하세요 setw.)

  • left - 생성된 필드(왼쪽 맞춤)의 끝 부분에서 채우기 문자를 삽입하여 필요에 따라 필드 너비를 채웁니다.

  • right - 생성된 필드(오른쪽 맞춤)의 시작 부분에서 채우기 문자를 삽입하여 필요에 따라 필드 너비를 채웁니다.

  • boolalpha - 숫자 값이 아닌 이름(예: truefalse)으로서 bool 형식의 개체를 삽입 또는 추출합니다.

  • fixed - 고정 소수점 형식(지수 필드 없음)의 부동 소수점 값을 삽입합니다.

  • scientific - 공학용 형식(지수 필드 사용)의 부동 소수점 값을 삽입합니다.

  • showpoint - 생성된 부동 소수점 필드에서 소수점을 무조건 삽입합니다.

  • showpos - 생성된 음수가 아닌 숫자 필드에 더하기 기호를 삽입합니다.

  • skipws - 특정 추출 전에 선행 공백을 건너뜁니다.

  • unitbuf - 각 삽입 후 출력을 플러시합니다.

  • uppercase - 특정 삽입의 소문자에 해당하는 대문자를 삽입합니다.

또한 다음 몇 개의 값이 유용합니다.

  • adjustfield, 로 정의된 비트 마스크 internal | left | right

  • basefield, 다음으로 정의됨 dec | hex | oct

  • floatfield, 다음으로 정의됨 fixed | scientific

이러한 형식 플래그를 수정하는 함수의 예는 다음을 참조하세요 <iomanip>.

getloc

저장된 locale 개체를 반환합니다.

locale getloc() const;

Return Value

저장된 locale 개체입니다.

예시

// ios_base_getlock.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
    using namespace std;
    cout << cout.getloc( ).name( ).c_str( ) << endl;
}
C

imbue

로캘을 변경합니다.

locale imbue(const locale& _Loc);

매개 변수

_Loc
새 로캘 설정입니다.

Return Value

이전 로캘입니다.

설명

멤버 함수는 개체에 저장 _Loclocale 다음 콜백 이벤트 및 imbue_event. 이전에 저장된 값을 반환합니다.

예시

샘플을 참조하세요 basic_ios::imbue .

Init

생성될 때 표준 iostream 개체를 만듭니다.

class Init { };

설명

중첩 클래스는 임의의 정적 개체에 대한 생성자를 실행하기 전에도 표준 iostream 개체가 제대로 생성되도록 하는 개체를 설명합니다.

ios_base

ios_base 개체를 생성합니다.

ios_base();

설명

(보호된) 생성자는 아무 작업도 수행하지 않습니다. 나중에 basic_ios::init를 호출할 경우 개체가 안전하게 삭제되기 전에 개체를 초기화해야 합니다. 따라서 클래스에 대한 유일한 안전한 사용은 클래스 ios_base 템플릿 basic_ios의 기본 클래스입니다.

iostate

스트림의 상태를 설명하는 상수의 형식입니다.

class ios_base {
public:
   typedef implementation-defined-bitmask-type iostate;
   static const iostate badbit;
   static const iostate eofbit;
   static const iostate failbit;
   static const iostate goodbit;
   // ...
};

설명

이 형식은 스트림 상태 정보를 저장할 수 있는 개체에 대해 설명하는 비트 마스크 형식입니다. 고유 플래그 값(요소)은 다음과 같습니다.

  • badbit - 스트림 버퍼의 무결성 손실을 기록합니다.
  • eofbit - 스트림에서 추출할 때 파일 끝을 기록합니다.
  • failbit - 스트림에서 유효한 필드를 추출하지 못하는 경우를 기록합니다.

또한 유용한 값은 goodbit입니다. 이때 앞에서 설명한 비트는 설정되지 않으며 goodbit는 0이 되도록 보장됩니다.

iword

iword로 저장할 수 있는 값을 할당합니다.

long& iword(int idx);

매개 변수

idx
iword로 저장할 값의 인덱스입니다.

설명

멤버 함수는 형식long의 요소를 사용하여 확장 가능한 배열의 요소 idx에 대한 참조를 반환합니다. 모든 요소는 효과적으로 존재하며 처음에는 0 값을 저장합니다. 반환된 참조는 개체에 iword 대한 다음 호출 후, 개체를 호출 basic_ios::copyfmt하여 변경한 후 또는 개체가 제거된 후 유효하지 않습니다.

음수이거나 요소에 대해 고유 스토리지를 사용할 수 없는 경우 idx 함수는 고유하지 않을 수 있는 참조를 호출 setstate(badbit) 하고 반환합니다.

고유한 인덱스(형식 ios_base의 모든 개체에서 사용)를 가져오려면 .를 호출 xalloc합니다.

예시

사용 iword방법에 대한 샘플은 참조 xalloc 하세요.

openmode

스트림과 상호 작용하는 방법을 설명합니다.

class ios_base {
public:
   typedef implementation-defined-bitmask-type openmode;
   static const openmode  in;
   static const openmode  out;
   static const openmode  ate;
   static const openmode  app;
   static const openmode  trunc;
   static const openmode  binary;
   // ...
};

설명

여러 iostream 개체의 여는 모드입니다. 플래그 값은 다음과 같습니다.

상수 효과
app 각 쓰기 전에 스트림의 끝으로 검색
ate 열린 직후 스트림의 끝으로 찾습니다.
binary 이진 모드에서 엽니다. (이진 모드에 대한 설명은 참조 fopen 하세요.)
in 읽기용으로 열기
out 쓰기를 위해 열기
trunc 열린 후 파일의 내용을 삭제합니다.

예시

// ios_base_openmode.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main ( )
{
    using namespace std;
    fstream file;
    file.open( "rm.txt", ios_base::out | ios_base::trunc );

    file << "testing";
}

operator=

ios_base 개체에 사용할 대입 연산자입니다.

ios_base& operator=(const ios_base& right);

매개 변수

right
ios_base 형식의 개체입니다.

Return Value

할당 중인 개체입니다.

설명

연산자는 저장된 서식 정보를 복사하여 확장 가능한 배열의 새 복사본을 만듭니다. 그런 다음 *this를 반환합니다. 콜백 스택은 복사되지 않습니다.

이 연산자는 ios_base에서 파생된 클래스에서만 사용됩니다.

precision

부동 소수점 숫자에 표시할 자릿수를 지정합니다.

streamsize precision() const;
streamsize precision(streamsize _Prec);

매개 변수

_Prec
표시할 유효 자릿수 또는 고정 표기법에서 소수점 뒤의 자릿수입니다.

Return Value

첫 번째 멤버 함수는 저장된 표시 자릿수를 반환합니다. 두 번째 멤버 함수는 _Prec를 표시 자릿수에 저장하고 이전에 저장된 값을 반환합니다.

설명

부동 소수점 숫자는 고정 표기법으로 fixed표시됩니다.

예시

// ios_base_precision.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
    using namespace std;
    float i = 31.31234F;

    cout.precision( 3 );
    cout << i << endl;          // display three significant digits
    cout << fixed << i << endl; // display three digits after decimal
                                // point
}
31.3
31.312

pword

pword로 저장할 수 있는 값을 할당합니다.

void *& pword(int index);

매개 변수

index
pword로 저장할 값의 인덱스입니다.

설명

멤버 함수는 형식 void 포인터의 요소를 사용하여 확장 가능한 배열의 요소 인덱스에 대한 참조를 반환합니다. 모든 요소는 효과적으로 존재하며 처음에는 null 포인터를 저장합니다. 반환된 참조는 개체에 pword 대한 다음 호출 후, 개체를 호출 basic_ios::copyfmt하여 변경한 후 또는 개체가 제거된 후 유효하지 않습니다.

인덱스가 음수이거나 요소에 대해 고유 스토리지를 사용할 수 없는 경우 함수는 고유하지 않을 수 있는 참조를 호출 setstate(badbit) 하고 반환합니다.

고유한 인덱스(형식 ios_base의 모든 개체에서 사용)를 가져오려면 .를 호출 xalloc합니다.

예시

pword 사용 예제는 xalloc를 참조하세요.

register_callback

콜백 함수를 지정합니다.

void register_callback(
    event_callback pfn, int idx);

매개 변수

pfn
콜백 함수에 대한 포인터입니다.

idx
사용자 정의 숫자입니다.

설명

멤버 함수는 쌍을 {pfn, idx} 저장된 콜백 스택 콜백 스택으로 푸시합니다. 콜백 이벤트 ev 가 보고되면 함수는 식 (*pfn)(ev, *this, idx)에 의해 레지스트리의 역순으로 호출됩니다.

예시

// ios_base_register_callback.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

using namespace std;

void callback1( ios_base::event e, ios_base& stream, int arg )
{
    cout << "in callback1" << endl;
    switch ( e )
    {
    case ios_base::erase_event:
        cout << "an erase event" << endl;
        break;
    case ios_base::imbue_event:
        cout << "an imbue event" << endl;
        break;
    case ios_base::copyfmt_event:
        cout << "an copyfmt event" << endl;
        break;
    };
}

void callback2( ios_base::event e, ios_base& stream, int arg )
{
    cout << "in callback2" << endl;
    switch ( e )
    {
    case ios_base::erase_event:
        cout << "an erase event" << endl;
        break;
    case ios_base::imbue_event:
        cout << "an imbue event" << endl;
        break;
    case ios_base::copyfmt_event:
        cout << "an copyfmt event" << endl;
        break;
    };
}

int main( )
{
    // Make sure the imbue will not throw an exception
    // assert( setlocale( LC_ALL, "german" )!=NULL );

    cout.register_callback( callback1, 0 );
    cin.register_callback( callback2, 0 );

    try
    {
        // If no exception because the locale's not found,
        // generate an imbue_event on callback1
        cout.imbue(locale("german"));
    }
    catch(...)
    {
        cout << "exception" << endl;
    }

    // This will
    // (1) erase_event on callback1
    // (2) copyfmt_event on callback2
    cout.copyfmt(cin);

    // We get two erase events from callback2 at the end because
    // both cin and cout have callback2 registered when cin and cout
    // are destroyed at the end of program.
}
in callback1
an imbue event
in callback1
an erase event
in callback2
an copyfmt event
in callback2
an erase event
in callback2
an erase event

seekdir

오프셋 작업에 대한 시작 지점을 지정합니다.

namespace std {
    class ios_base {
    public:
        typedef implementation-defined-enumerated-type seekdir;
        static const seekdir beg;
        static const seekdir cur;
        static const seekdir end;
        // ...
    };
}

설명

이 형식은 여러 iostream 클래스의 멤버 함수에 대한 인수로 사용되는 검색 모드를 저장할 수 있는 개체를 설명하는 열거형 형식입니다. 고유 플래그 값은 다음과 같습니다.

  • beg시퀀스의 시작 부분(배열, 스트림 또는 파일)을 기준으로 현재 읽기 또는 쓰기 위치를 변경합니다.

  • cur시퀀스 내의 현재 위치를 기준으로 검색합니다.

  • end시퀀스의 끝을 기준으로 찾습니다.

예시

// ios_base_seekdir.cpp
// compile with: /EHsc
#include <iostream>
#include <fstream>

int main ( )
{
    using namespace std;
    fstream file;
    file.open( "rm.txt", ios_base::out | ios_base::trunc );

    file << "testing";
    file.seekp( 0, ios_base::beg );
    file << "a";
    file.seekp( 0, ios_base::end );
    file << "a";
}

setf

지정된 플래그를 설정합니다.

fmtflags setf(
    fmtflags _Mask
);
fmtflags setf(
    fmtflags _Mask,
    fmtflags _Unset
);

매개 변수

_Mask
설정할 플래그입니다.

_Unset
해제할 플래그입니다.

Return Value

이전 형식 플래그

설명

첫 번째 멤버 함수는 효과적으로 호출 flags(_Mask | _Flags) (선택한 비트 설정)한 다음 이전 형식 플래그를 반환합니다. 두 번째 멤버 함수는 마스크 아래에서 선택한 비트를 효과적으로 호출 flags(_Mask & fmtfl, flags & ~_Mask) 한 다음 이전 형식 플래그를 반환합니다.

예시

// ios_base_setf.cpp
// compile with: /EHsc
#include <iostream>

int main( )
{
    using namespace std;
    int i = 10;
    cout << i << endl;

    cout.unsetf( ios_base::dec );
    cout.setf( ios_base::hex );
    cout << i << endl;

    cout.setf( ios_base::dec );
    cout << i << endl;
    cout.setf( ios_base::hex, ios_base::dec );
    cout << i << endl;
}

sync_with_stdio

iostream C 런타임 라이브러리 작업이 소스 코드에 표시되는 순서대로 수행되도록 합니다.

static bool sync_with_stdio(
   bool _Sync = true
);

매개 변수

_Sync
모든 스트림이 stdio.

Return Value

이 함수에 대한 이전 설정입니다.

설명

정적 멤버 함수는 처음에는 동기화 플래그를 stdio 저장합니다 true. 이 true플래그를 사용하면 동일한 파일의 작업이 C++ 표준 라이브러리에 정의된 함수와 함수 간에 iostreams 제대로 동기화됩니다. 그렇지 않으면 동기화가 보장되거나 보장되지 않을 수 있지만 성능이 향상될 수 있습니다. 함수는 동기화 플래그에 stdio 저장 _Sync 되고 이전 저장된 값을 반환합니다. 표준 스트림에서 작업을 수행하기 전에 안정적으로 호출할 수 있습니다.

unsetf

지정된 플래그를 끕니다.

void unsetf(
   fmtflags _Mask
);

매개 변수

_Mask
해제하려는 플래그입니다.

설명

멤버 함수는 효과적으로 호출 flags(~_Mask & flags) 합니다(선택한 비트 지우기).

예시

사용 unsetf샘플은 참조하세요ios_base::setf.

width

출력 스트림의 길이를 설정합니다.

streamsize width( ) const;
streamsize width(
   streamsize _Wide
);

매개 변수

_Wide
출력 스트림의 원하는 크기입니다.

Return Value

현재 너비 설정입니다.

설명

첫 번째 멤버 함수는 저장된 필드 너비를 반환합니다. 두 번째 멤버 함수는 필드 너비에 저장 _Wide 되고 이전에 저장된 값을 반환합니다.

예시

// ios_base_width.cpp
// compile with: /EHsc
#include <iostream>

int main( ) {
    using namespace std;

    cout.width( 20 );
    cout << cout.width( ) << endl;
    cout << cout.width( ) << endl;
}
20
0

xalloc

변수가 스트림의 일부임을 지정합니다.

static int xalloc( );

Return Value

정적 멤버 함수는 저장된 정적 값을 반환하며 각 호출에서 증가합니다.

설명

멤버 함수를 호출할 pword때 반환 값을 고유 인덱스 인수로 사용할 수 있습니다.iword

예시

// ios_base_xalloc.cpp
// compile with: /EHsc
// Lets you store user-defined information.
// iword, jword, xalloc
#include <iostream>

int main( )
{
    using namespace std;

    static const int i = ios_base::xalloc();
    static const int j = ios_base::xalloc();
    cout.iword( i ) = 11;
    cin.iword( i ) = 13;
    cin.pword( j ) = "testing";
    cout << cout.iword( i ) << endl;
    cout << cin.iword( i ) << endl;
    cout << ( char * )cin.pword( j ) << endl;
}
11
13
testing

참고 항목

C++ 표준 라이브러리의 스레드 보안
iostream 프로그래밍
iostreams 규칙