std::basic_istream<CharT,Traits>:: get
|
int_type get
(
)
;
|
(1) | |
|
basic_istream
&
get
(
char_type
&
ch
)
;
|
(2) | |
|
basic_istream
&
get
(
char_type
*
s,
std::
streamsize
count
)
;
|
(3) | |
|
basic_istream
&
get
(
char_type
*
s,
std::
streamsize
count, char_type delim
)
;
|
(4) | |
|
basic_istream
&
get
(
basic_streambuf
&
strbuf
)
;
|
(5) | |
|
basic_istream
&
get
(
basic_streambuf
&
strbuf, char_type delim
)
;
|
(6) | |
스트림에서 문자 또는 문자들을 추출합니다.
모든 버전은 UnformattedInputFunction s 로 동작합니다. sentry 객체를 구성하고 검사한 후, 이 함수들은 다음을 수행합니다:
- count 가 1 보다 작거나 count - 1 개의 문자가 저장된 경우
- 입력 시퀀스에서 파일 끝 조건이 발생하는 경우 ( setstate ( eofbit ) 가 호출됨)
-
다음으로 사용 가능한 입력 문자
c
가
delim
과 동일한 경우 (이는
Traits
::
eq
(
c, delim
)
에 의해 결정됨). 이 문자는 추출되지 않습니다 (
getline()과 다름).
- 입력 시퀀스에서 파일 끝 조건이 발생하는 경우.
- 출력 시퀀스에 삽입하는 작업이 실패하는 경우 (이때 삽입하지 못한 문자는 추출되지 않음).
- 다음으로 사용 가능한 입력 문자 c 가 delim 와 동일한 경우, 이는 Traits :: eq ( c, delim ) 에 의해 결정됩니다. 이 문자는 추출되지 않습니다.
- 예외가 발생하는 경우 (이때 예외는 catch되며 재발생되지 않음).
문자가 추출되지 않았을 경우, setstate ( failbit ) 를 호출합니다.
모든 버전은 추출된 문자 수를 gcount() 값으로 설정합니다.
목차 |
매개변수
| ch | - | 결과를 기록할 문자에 대한 참조 |
| s | - | 저장할 문자들을 담을 문자열 포인터 |
| count | - | s 가 가리키는 문자열의 크기 |
| delim | - | 추출을 중지할 구분 문자. 추출되지 않으며 저장되지 않음 |
| strbuf | - | 내용을 읽어올 스트림 버퍼 |
반환값
예외
내부 연산에서 예외가 발생하면, 해당 예외는 catch되어
badbit
이 설정됩니다. 만약
exceptions()
이
badbit
에 대해 설정되어 있다면, 예외가 다시 throw됩니다.
예제
#include <iostream> #include <sstream> int main() { std::istringstream s1("Hello, world."); char c1 = s1.get(); // 'H'를 읽음 std::cout << "after reading " << c1 << ", gcount() == " << s1.gcount() << '\n'; char c2; s1.get(c2); // 'e'를 읽음 char str[5]; s1.get(str, 5); // "llo,"를 읽음 std::cout << "after reading " << str << ", gcount() == " << s1.gcount() << '\n'; std::cout << c1 << c2 << str; s1.get(*std::cout.rdbuf()); // 나머지 부분을 읽음 ('\n' 제외) std::cout << "\nAfter the last get(), gcount() == " << s1.gcount() << '\n'; }
출력:
after reading H, gcount() == 1 after reading llo,, gcount() == 4 Hello, world. After the last get(), gcount() == 7
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 370 | C++98 |
오버로드
(5)
의 효과는
get
(
s, count, widen
(
'
\n
'
)
)
이었으며,
이는 오버로드 (3) 의 효과임 |
다음으로 수정됨
get ( strbuf, widen ( ' \n ' ) ) |
| LWG 531 | C++98 |
오버로드
(3,4)
가
count
가 양수가 아닌 경우를
처리할 수 없었음 |
이 경우에는 문자를
추출하지 않음 |
참고 항목
|
문자 블록을 추출합니다
(public member function) |
|
|
형식화된 데이터를 추출합니다
(public member function) |
|
|
문자와 문자 배열을 추출합니다
(function template) |