basic_ostream 클래스
이 클래스 템플릿은 traits_type라고도 하는 클래스에 의해 문자 특성이 결정되는 char_type 형식의 Elem
요소를 사용하여 스트림 버퍼에 요소 및 인코딩된 Tr
개체의 삽입을 제어하는 개체를 설명합니다.
구문
template <class Elem, class Tr = char_traits<Elem>>
class basic_ostream : virtual public basic_ios<Elem, Tr>
매개 변수
Elem
char_type
.
Tr
문자 traits_type
입니다.
설명
오버로드 연산<<자를 오버로드하는 멤버 함수의 대부분은 형식이 지정된 출력 함수입니다. 다음 패턴을 따릅니다.
iostate state = goodbit;
const sentry ok(*this);
if (ok)
{try
{<convert and insert elements
accumulate flags in state> }
catch (...)
{try
{setstate(badbit);
}
catch (...)
{}
if ((exceptions()& badbit) != 0)
throw; }}
width(0);
// Except for operator<<(Elem)
setstate(state);
return (*this);
다른 두 멤버 함수는 형식이 지정되지 않은 출력 함수입니다. 다음 패턴을 따릅니다.
iostate state = goodbit;
const sentry ok(*this);
if (!ok)
state |= badbit;
else
{try
{<obtain and insert elements
accumulate flags in state> }
catch (...)
{try
{setstate(badbit);
}
catch (...)
{}
if ((exceptions()& badbit) != 0)
throw; }}
setstate(state);
return (*this);
두 함수 그룹은 요소를 삽입하는 동안 오류가 발생하면 setstate(badbit)를 호출합니다.
Elem을 basic_istream<클래스의 개체인 Tr>은 클래스 basic_ios<Elem, Tr>의 가상 공용 기본 개체만 저장합니다.
예시
출력 스트림에 대한 자세한 내용은 basic_ofstream 클래스에 대한 예제를 참조하세요.
생성자
생성자 | Description |
---|---|
basic_ostream | basic_ostream 개체를 생성합니다. |
멤버 함수
멤버 함수 | 설명 |
---|---|
flush | 버퍼를 플러시합니다. |
put | 스트림에 문자를 넣습니다. |
seekp | 출력 스트림 내의 위치를 다시 설정합니다. |
sentry | 중첩 클래스는 선언에서 형식이 지정된 출력 함수 및 형식이 지정되지 않은 출력 함수를 구성하는 개체를 설명합니다. |
swap | 이 basic_ostream 개체의 값을 제공된 basic_ostream 개체의 값으로 교환합니다. |
tellp | 출력 스트림 내의 위치를 보고합니다. |
write | 스트림에 문자를 넣습니다. |
연산자
연산자 | 설명 |
---|---|
operator= | 제공된 basic_ostream 개체 매개 변수의 값을 이 개체에 할당합니다. |
연산자<< | 스트림에 씁니다. |
요구 사항
헤더:<ostream>
네임스페이스: std
basic_ostream::basic_ostream
basic_ostream
개체를 생성합니다.
explicit basic_ostream(
basic_streambuf<Elem, Tr>* strbuf,
bool _Isstd = false);
basic_ostream(basic_ostream&& right);
매개 변수
strbuf
basic_streambuf 형식의 개체입니다.
_Isstd
표준 스트림인 경우 true
, 아닌 경우 false
입니다.
right
basic_ostream
형식의 개체에 대한 rvalue 참조입니다.
설명
첫 번째 생성자는 init(strbuf
)를 호출하여 기본 개체를 초기화합니다. 두 번째 생성자는 basic_ios::move(right)
를 호출하여 기본 개체를 초기화합니다.
예시
출력 스트림에 대한 자세한 내용은 basic_ofstream::basic_ofstream에 대한 예제를 참조하세요.
basic_ostream::flush
버퍼를 플러시합니다.
basic_ostream<Elem, Tr>& flush();
Return Value
Basic_ostream 개체에 대한 참조입니다.
설명
rdbuf가 null 포인터가 아닌 경우 함수는 rdbuf-pubsync>를 호출합니다. -1이 반환되는 경우 함수는 setstate(badbit)를 호출합니다. *this를 반환합니다.
예시
// basic_ostream_flush.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout << "test";
cout.flush();
}
test
basic_ostream::operator<<
스트림에 씁니다.
basic_ostream<Elem, Tr>& operator<<(
basic_ostream<Elem, Tr>& (* Pfn)(basic_ostream<Elem, Tr>&));
basic_ostream<Elem, Tr>& operator<<(
ios_base& (* Pfn)(ios_base&));
basic_ostream<Elem, Tr>& operator<<(
basic_ios<Elem, Tr>& (* Pfn)(basic_ios<Elem, Tr>&));
basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
basic_ostream<Elem, Tr>& operator<<(bool val);
basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int __w64 val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64 val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long __w64 val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
basic_ostream<Elem, Tr>& operator<<(const void* val);
매개 변수
Pfn
함수 포인터입니다.
strbuf
stream_buf
개체에 대한 포인터입니다.
val
스트림에 기록할 요소입니다.
Return Value
Basic_ostream 개체에 대한 참조입니다.
설명
또한 ostream> 헤더는 <여러 전역 삽입 연산자를 정의합니다. 자세한 내용은 operator<<를 참조하세요.
첫 번째 멤버 함수는 폼 ostr << endl
의 식이 endl(ostr)을 호출한 다음 *this를 반환하도록 합니다. 두 번째와 세 번째 함수는 hex와 같은 기타 조작자가 비슷하게 동작하도록 합니다. 나머지 함수는 모두 형식이 지정된 출력 함수입니다.
함수
basic_ostream<Elem, Tr>& operator<<(basic_streambuf<Elem, Tr>* strbuf);
strbuf가 null 포인터가 아닌 경우 strbuf에서 요소를 추출하고 삽입합니다. 추출은 파일의 끝에서 또는 추출이 예외를 throw하는 경우(다시 throw됨) 중지됩니다. 또한 삽입이 실패하면 문제의 요소를 추출하지 않은 채 중단됩니다. 함수가 요소를 삽입하지 않거나 추출이 예외를 throw하면 함수는 setstate(failbit)를 호출합니다. 어쨌든 함수는 *this를 반환합니다.
함수
basic_ostream<Elem, Tr>& operator<<(bool val);
_Val
는 부울 필드로 변환하고 use_facet num_put<<Elem, OutIt>(
getloc)를 호출하여 삽입합니다. put(OutIt(rdbuf), *this, getloc
, val). OutIt
여기서는 ostreambuf_iterator<Elem, Tr>로 정의됩니다. 함수는 *this를 반환합니다.
함수
basic_ostream<Elem, Tr>& operator<<(short val);
basic_ostream<Elem, Tr>& operator<<(unsigned short val);
basic_ostream<Elem, Tr>& operator<<(int val);
basic_ostream<Elem, Tr>& operator<<(unsigned int __w64 val);
basic_ostream<Elem, Tr>& operator<<(long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long val);
basic_ostream<Elem, Tr>& operator<<(long long val);
basic_ostream<Elem, Tr>& operator<<(unsigned long long val);
basic_ostream<Elem, Tr>& operator<<(const void* val);
각각 val을 숫자 필드로 변환하고 use_facet num_put<<Elem, OutIt>(getloc
)를 호출하여 삽입합니다. put(OutIt(rdbuf
), *this, getloc
, val). 여기서 OutIt는 ostreambuf_iterator<Elem, Tr>로 정의됩니다. 함수는 *this를 반환합니다.
함수
basic_ostream<Elem, Tr>& operator<<(float val);
basic_ostream<Elem, Tr>& operator<<(double val);
basic_ostream<Elem, Tr>& operator<<(long double val);
각각 val을 숫자 필드로 변환하고 use_facet num_put<<Elem, OutIt>(getloc
)를 호출하여 삽입합니다. put(OutIt(rdbuf
), *this, getloc
val). 여기서 OutIt는 ostreambuf_iterator<Elem, Tr>로 정의됩니다. 함수는 *this를 반환합니다.
예시
// basic_ostream_op_write.cpp
// compile with: /EHsc
#include <iostream>
#include <string.h>
using namespace std;
ios_base& hex2( ios_base& ib )
{
ib.unsetf( ios_base::dec );
ib.setf( ios_base::hex );
return ib;
}
basic_ostream<char, char_traits<char> >& somefunc(basic_ostream<char, char_traits<char> > &i)
{
if (i == cout)
{
i << "i is cout" << endl;
}
return i;
}
class CTxtStreambuf : public basic_streambuf< char, char_traits< char > >
{
public:
CTxtStreambuf(char *_pszText)
{
pszText = _pszText;
setg(pszText, pszText, pszText + strlen(pszText));
};
char *pszText;
};
int main()
{
cout << somefunc;
cout << 21 << endl;
hex2(cout);
cout << 21 << endl;
CTxtStreambuf f("text in streambuf");
cout << &f << endl;
}
basic_ostream::operator=
제공된 basic_ostream
개체 매개 변수의 값을 이 개체에 할당합니다.
basic_ostream& operator=(basic_ostream&& right);
매개 변수
right
basic_ostream
개체에 대한 rvalue
참조입니다.
설명
멤버 연산자는 swap (right)
를 호출합니다.
basic_ostream::p ut
스트림에 문자를 넣습니다.
basic_ostream<Elem, Tr>& put(char_type _Ch);
매개 변수
_채널
단일 문자입니다.
Return Value
Basic_ostream 개체에 대한 참조입니다.
설명
서식이 지정되지 않은 출력 함수는 요소 _Ch 삽입합니다. *this를 반환합니다.
예시
// basic_ostream_put.cpp
// compile with: /EHsc
#include <iostream>
int main( )
{
using namespace std;
cout.put( 'v' );
cout << endl;
wcout.put( L'l' );
}
v
l
basic_ostream::seekp
출력 스트림 내의 위치를 다시 설정합니다.
basic_ostream<Elem, Tr>& seekp(pos_type _Pos);
basic_ostream<Elem, Tr>& seekp(off_type _Off, ios_base::seekdir _Way);
매개 변수
_Pos
스트림 내의 위치입니다.
_Off
_Way 상대적인 오프셋입니다.
_길
ios_base::seekdir 열거형 중 하나입니다.
Return Value
Basic_ostream 개체에 대한 참조입니다.
설명
fail이면 첫 번째 멤버 함수는 false
일부 pos_type
임시 개체에 대해 newpos = rdbuf- >pubseekpos(_Pos)를 호출합니다.newpos
false이면 fail
두 번째 함수는 newpos = rdbuf- > pubseekoff(_Off, _Way)를 호출합니다. 어떤 경우든 (off_type
)newpos == (off_type
)(-1)(배치 작업 실패)이면 함수는 istr.setstate(failbit)를 호출합니다. 두 함수 모두 *this를 반환합니다.
예시
// basic_ostream_seekp.cpp
// compile with: /EHsc
#include <fstream>
#include <iostream>
int main()
{
using namespace std;
ofstream x("basic_ostream_seekp.txt");
streamoff i = x.tellp();
cout << i << endl;
x << "testing";
i = x.tellp();
cout << i << endl;
x.seekp(2); // Put char in third char position in file
x << " ";
x.seekp(2, ios::end); // Put char two after end of file
x << "z";
}
0
7
basic_ostream::sentry
중첩 클래스는 선언에서 형식이 지정된 출력 함수 및 형식이 지정되지 않은 출력 함수를 구성하는 개체를 설명합니다.
class sentry { public: explicit sentry(basic_ostream<Elem, Tr>& _Ostr); operator bool() const; ~sentry(); };
설명
중첩 클래스는 선언에서 형식이 지정된 출력 함수 및 형식이 지정되지 않은 출력 함수를 구성하는 개체를 설명합니다. ostr인 경우 good is true
and ostr.tie는 null 포인터가 아니며 생성자는 ostr.tie-flush를> 호출합니다. 그런 다음 생성자는 반환된 값을 ostr.good
저장합니다 status
. 이 저장된 값을 전달하기 위한 operator bool
이후 호출입니다.
반환 false
및 플래그 및 unitbuf가 0이 아니면 uncaught_exception
소멸자가 플러시를 호출합니다.
basic_ostream::swap
이 basic_ostream
개체의 값을 제공된 basic_ostream
의 값으로 교환합니다.
void swap(basic_ostream& right);
매개 변수
right
basic_ostream
개체에 대한 참조입니다.
설명
멤버 함수는 basic_ios::swap(right)
을 호출하여 이 개체의 내용을 오른쪽 내용으로 교환합니다.
basic_ostream::tellp
출력 스트림 내의 위치를 보고합니다.
pos_type tellp();
Return Value
출력 스트림 내의 위치입니다.
설명
fail이면 멤버 함수는 false
rdbuf-> pubseekoff(0, cur
in)를 반환합니다. 아닌 경우 pos_type
(-1)를 반환합니다.
예시
tellp
사용 예제는 seekp를 참조하세요.
basic_ostream::write
스트림에 문자를 넣습니다.
basic_ostream<Elem, Tr>& write(const char_type* str, streamsize count);
매개 변수
count
스트림에 넣을 문자의 수입니다.
str
스트림에 넣을 문자입니다.
Return Value
Basic_ostream 개체에 대한 참조입니다.
설명
형식이 지정되지 않은 출력 함수는 str에서 시작하는 개수 요소의 시퀀스를 삽입합니다.
예시
write
사용 예제는 streamsize를 참조하세요.