operator<< (std::basic_ostream)
|
헤더 파일에 정의됨
<ostream>
|
||
|
basic_ostream과 문자
|
||
| (1) | ||
|
template
<
class
CharT,
class
Traits
>
basic_ostream
<
CharT, Traits
>
&
|
||
|
template
<
class
CharT,
class
Traits
>
basic_ostream
<
CharT, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
basic_ostream과 문자 배열
|
||
| (2) | ||
|
template
<
class
CharT,
class
Traits
>
basic_ostream
<
CharT, Traits
>
&
|
||
|
template
<
class
CharT,
class
Traits
>
basic_ostream
<
CharT, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
basic_ostream rvalue
|
||
|
template
<
class
Ostream,
class
T
>
Ostream && operator << ( Ostream && os, const T & value ) ; |
(3) | (C++11 이후) |
|
basic_ostream 및 UTF 문자/배열에 대한 삭제된 오버로드
|
||
| (4) | (C++20 이후) | |
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
char
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
|
template
<
class
Traits
>
basic_ostream
<
wchar_t
, Traits
>
&
|
||
문자 또는 문자열을 삽입합니다.
- 만약 os. width ( ) > 1 이면, os. width ( ) - 1 개의 os. fill ( ) 복사본이 출력 문자에 추가되어 출력 문자 시퀀스를 형성합니다.
- 만약 ( out. flags ( ) & std:: ios_base :: adjustfield ) == std:: ios_base :: left 이면, 채움 문자가 출력 문자 뒤에 배치되고, 그렇지 않으면 앞에 배치됩니다.
-
첫 번째와 세 번째 오버로드(
CharT가 ch 의 타입과 일치하는 경우)에서는 정확히 traits :: length ( s ) 개의 문자가 삽입됩니다. - 두 번째 오버로드에서는 정확히 std:: char_traits < char > :: length ( s ) 개의 문자가 삽입됩니다.
- 마지막 두 오버로드에서는 정확히 traits :: length ( reinterpret_cast < const char * > ( s ) ) 개의 문자가 삽입됩니다.
- 삽입할 문자 수가 os. width ( ) 보다 적은 경우, os. fill ( ) 의 복사본을 충분히 추가하여 문자 시퀀스의 길이를 os. width ( ) 와 동일하게 만듭니다.
- 만약 ( out. flags ( ) & std:: ios_base :: adjustfield ) == std:: ios_base :: left 인 경우, 채움 문자는 출력 시퀀스의 끝에 추가됩니다. 그렇지 않으면 출력 시퀀스 앞에 추가됩니다.
Ostream
이
std::ios_base
로부터 공개적이고 명확하게 파생된 클래스 타입인 경우에만 오버로드 해결에 참여합니다.
목차 |
매개변수
| os | - | 데이터를 삽입할 출력 스트림 |
| ch | - | 삽입할 문자에 대한 참조 |
| s | - | 삽입할 문자 문자열에 대한 포인터 |
반환값
참고 사항
이전에 LWG 이슈 1203 이전에는, ( std:: ostringstream ( ) << 1.2 ) . str ( ) 와 같은 코드는 컴파일되지 않았습니다.
예제
#include <fstream> #include <iostream> void foo() { // error: operator<< (basic_ostream<char, _Traits>&, char8_t) is deleted // std::cout << u8'z' << '\n'; } std::ostream& operator<<(std::ostream& os, char8_t const& ch) { return os << static_cast<char>(ch); } int main() { std::cout << "Hello, world" // uses `const char*` overload << '\n'; // uses `char` overload std::ofstream{"test.txt"} << 1.2; // uses rvalue overload std::cout << u8'!' << '\n'; // uses program-defined operator<<(os, char8_t const&) }
출력:
Hello, world !
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 167 | C++98 |
(2)
에 있는 모든 오버로드에 대해 삽입된
문자 수가 traits :: length ( s ) 였음 |
CharT
가
ch
의 타입과 일치하지 않는
오버로드들의 숫자를 업데이트함 |
| LWG 1203 | C++11 |
rvalue 스트림에 대한 오버로드가
기본 클래스의 lvalue 참조를 반환함 |
파생 클래스의 rvalue 참조를
반환함 |
| LWG 2011 | C++98 | 패딩이 std::num_put::do_put() 에 의해 결정됨 | 연산자 자체에 의해 결정됨 |
| LWG 2534 | C++11 | rvalue 스트림에 대한 오버로드가 제약되지 않았음 | 제약됨 |
참고 항목
|
형식화된 데이터 삽입
(public member function) |
|
|
(C++23)
|
인수의
형식화된
표현 출력
(function template) |
|
문자 확장
(public member function of
std::basic_ios<CharT,Traits>
)
|