std:: getline
|
헤더에 정의됨
<string>
|
||
|
template
<
class
CharT,
class
Traits,
class
Allocator
>
std::
basic_istream
<
CharT, Traits
>
&
|
(1) | |
|
template
<
class
CharT,
class
Traits,
class
Allocator
>
std::
basic_istream
<
CharT, Traits
>
&
|
(2) | (C++11부터) |
|
template
<
class
CharT,
class
Traits,
class
Allocator
>
std::
basic_istream
<
CharT, Traits
>
&
|
(3) | |
|
template
<
class
CharT,
class
Traits,
class
Allocator
>
std::
basic_istream
<
CharT, Traits
>
&
|
(4) | (C++11부터) |
getline
는 입력 스트림에서 문자를 읽어 문자열에 저장합니다:
목차 |
매개변수
| input | - | 데이터를 가져올 스트림 |
| str | - | 데이터를 저장할 문자열 |
| delim | - | 구분 문자 |
반환값
input
참고 사항
공백으로 구분된 입력을 사용할 때(예:
int
n
;
std::
cin
>>
n
;
) 뒤따르는 모든 공백(개행 문자 포함)이 입력 스트림에 남게 됩니다. 그러다가 줄 단위 입력으로 전환할 때,
getline
으로 가져온 첫 번째 줄은 바로 그 공백일 것입니다. 이러한 동작이 원하지 않는 경우일 가능성이 높으므로, 가능한 해결 방법으로는:
-
명시적인 불필요한 초기 호출
getline. - 연속된 공백 제거 std:: cin >> std:: ws .
- 입력 라인의 모든 남은 문자 무시 cin. ignore ( std:: numeric_limits < std:: streamsize > :: max ( ) , ' \n ' ) ; .
예제
다음 예제는
getline
함수를 사용하여 사용자 입력을 읽고, 스트림을 한 줄씩 처리하거나
delim
매개변수를 사용하여 줄의 일부를 처리하는 방법을 보여줍니다.
#include <iostream> #include <sstream> #include <string> int main() { // 사용자 인사 std::string name; std::cout << "What is your name? "; std::getline(std::cin, name); std::cout << "Hello " << name << ", nice to meet you.\n"; // 파일을 한 줄씩 읽기 std::istringstream input; input.str("1\n2\n3\n4\n5\n6\n7\n"); int sum = 0; for (std::string line; std::getline(input, line);) sum += std::stoi(line); std::cout << "\nThe sum is " << sum << ".\n\n"; // 구분자를 사용하여 줄의 일부 읽기 std::istringstream input2; input2.str("a;b;c;d"); for (std::string line; std::getline(input2, line, ';');) std::cout << line << '\n'; }
가능한 출력:
What is your name? John Q. Public Hello John Q. Public, nice to meet you. The sum is 28. a b c d
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| LWG 91 | C++98 |
getline
이 비형식화된 입력 함수로 동작하지 않음
|
비형식화된 입력 함수로 동작함 |
참고 항목
|
주어진 문자를 찾을 때까지 문자를 추출합니다
(
std::basic_istream<CharT,Traits>
의 public member function)
|