cin은 사용자로부터 입력을 받는 데 사용되는 객체이지만 여러 줄의 입력을 허용하지 않습니다. 여러 줄을 허용하려면 getline() 함수를 사용합니다. 에 정의된 사전 정의된 함수입니다. 구분 문자가 나타날 때까지 입력 스트림에서 한 줄이나 문자열을 받아들이는 데 사용되는 헤더 파일입니다.
getline() 함수의 구문:
함수를 표현하는 방법에는 두 가지가 있습니다.
- 선언하는 첫 번째 방법은 세 개의 매개변수를 전달하는 것입니다.
istream& getline( istream& is, string& str, char delim );
위의 구문에는 세 가지 매개변수가 포함되어 있습니다. 이다, str , 그리고 나는 공유한다 .
어디,
이다: 입력 스트림을 읽을 위치를 정의하는 istream 클래스의 객체입니다.
str: 문자열이 저장되어 있는 문자열 객체입니다.
섬 자바공유하다: 구분 문자입니다.
반환 값
이 함수는 함수에 매개변수로 전달되는 입력 스트림 객체를 반환합니다.
- 두 번째 선언 방법은 두 개의 매개변수를 전달하는 것입니다.
istream& getline( istream& is, string& str );
위 구문에는 두 개의 매개변수가 포함되어 있습니다. ~이다 그리고 str . 이 구문은 위 구문과 거의 유사합니다. 유일한 차이점은 구분 문자가 없다는 것입니다.
어디,
이다: 입력 스트림을 읽을 위치를 정의하는 istream 클래스의 객체입니다.
자바의 예외 처리
str: 문자열이 저장되어 있는 문자열 객체입니다.
반환 값
이 함수는 또한 함수에 매개변수로 전달되는 입력 스트림을 반환합니다.
예를 통해 이해해 봅시다.
먼저 getline() 함수를 사용하지 않고 사용자 입력을 받는 예를 살펴보겠습니다.
#include #include using namespace std; int main() { string name; // variable declaration std::cout << 'Enter your name :' <>name; cout<<' hello '<<name; return 0; } < pre> <p>In the above code, we take the user input by using the statement <strong>cin>>name,</strong> i.e., we have not used the <strong>getline()</strong> function.</p> <p> <strong>Output</strong> </p> <pre> Enter your name : John Miller Hello John </pre> <p>In the above output, we gave the name 'John Miller' as user input, but only 'John' was displayed. Therefore, we conclude that cin does not consider the character when the space character is encountered.</p> <p> <strong>Let's resolve the above problem by using getline() function.</strong> </p> <pre> #include #include using namespace std; int main() { string name; // variable declaration. std::cout << 'Enter your name :' << std::endl; getline(cin,name); // implementing a getline() function cout<<' hello '<<name; return 0;} < pre> <p>In the above code, we have used the <strong>getline()</strong> function to accept the character even when the space character is encountered.</p> <p> <strong>Output</strong> </p> <pre> Enter your name : John Miller Hello John Miller </pre> <p>In the above output, we can observe that both the words, i.e., John and Miller, are displayed, which means that the getline() function considers the character after the space character also.</p> <p> <strong>When we do not want to read the character after space then we use the following code:</strong> </p> <pre> #include #include using namespace std; int main() { string profile; // variable declaration std::cout << 'Enter your profile :' << std::endl; getline(cin,profile,' '); // implementing getline() function with a delimiting character. cout<<' profile is :'<<p>In the above code, we take the user input by using getline() function, but this time we also add the delimiting character('') in a third parameter. Here, delimiting character is a space character, means the character that appears after space will not be considered.<p></p> <p> <strong>Output</strong> </p> <pre> Enter your profile : Software Developer Profile is: Software </pre> <h3>Getline Character Array</h3> <p>We can also define the getline() function for character array, but its syntax is different from the previous one.</p> <p> <strong>Syntax</strong> </p> <pre> istream& getline(char* , int size); </pre> <p>In the above syntax, there are two parameters; one is <strong>char</strong> *, and the other is <strong>size</strong> .</p> <p> <strong>Where,</strong> </p> <p> <strong>char*:</strong> It is a character pointer that points to the array.</p> <p> <strong>Size:</strong> It acts as a delimiter that defines the size of the array means input cannot cross this size.</p> <p> <strong>Let's understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout<< 'Enter your favorite fruit: '; cin.getline(fruits, 50); // implementing getline() function std::cout << ' Your favorite fruit is :'<<fruits << std::endl; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Enter your favorite fruit: Watermelon Your favorite fruit is: Watermelon </pre> <hr></fruits></pre></' profile></pre></' hello></pre></' hello>
위 출력에서는 사용자 입력으로 'John Miller'라는 이름을 지정했지만 'John'만 표시되었습니다. 따라서 우리는 cin이 공백 문자를 만날 때 해당 문자를 고려하지 않는다는 결론을 내립니다.
getline() 함수를 사용하여 위의 문제를 해결해보자.
#include #include using namespace std; int main() { string name; // variable declaration. std::cout << 'Enter your name :' << std::endl; getline(cin,name); // implementing a getline() function cout<<\' hello \'<<name; return 0;} < pre> <p>In the above code, we have used the <strong>getline()</strong> function to accept the character even when the space character is encountered.</p> <p> <strong>Output</strong> </p> <pre> Enter your name : John Miller Hello John Miller </pre> <p>In the above output, we can observe that both the words, i.e., John and Miller, are displayed, which means that the getline() function considers the character after the space character also.</p> <p> <strong>When we do not want to read the character after space then we use the following code:</strong> </p> <pre> #include #include using namespace std; int main() { string profile; // variable declaration std::cout << 'Enter your profile :' << std::endl; getline(cin,profile,' '); // implementing getline() function with a delimiting character. cout<<\' profile is :\'<<p>In the above code, we take the user input by using getline() function, but this time we also add the delimiting character('') in a third parameter. Here, delimiting character is a space character, means the character that appears after space will not be considered.<p></p> <p> <strong>Output</strong> </p> <pre> Enter your profile : Software Developer Profile is: Software </pre> <h3>Getline Character Array</h3> <p>We can also define the getline() function for character array, but its syntax is different from the previous one.</p> <p> <strong>Syntax</strong> </p> <pre> istream& getline(char* , int size); </pre> <p>In the above syntax, there are two parameters; one is <strong>char</strong> *, and the other is <strong>size</strong> .</p> <p> <strong>Where,</strong> </p> <p> <strong>char*:</strong> It is a character pointer that points to the array.</p> <p> <strong>Size:</strong> It acts as a delimiter that defines the size of the array means input cannot cross this size.</p> <p> <strong>Let's understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout<< 'Enter your favorite fruit: '; cin.getline(fruits, 50); // implementing getline() function std::cout << ' Your favorite fruit is :'<<fruits << std::endl; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Enter your favorite fruit: Watermelon Your favorite fruit is: Watermelon </pre> <hr></fruits></pre></\' profile></pre></\' hello>
위 출력에서 John과 Miller라는 두 단어가 모두 표시되는 것을 볼 수 있습니다. 이는 getline() 함수가 공백 문자 다음의 문자도 고려한다는 것을 의미합니다.
공백 뒤의 문자를 읽고 싶지 않으면 다음 코드를 사용합니다.
#include #include using namespace std; int main() { string profile; // variable declaration std::cout << 'Enter your profile :' << std::endl; getline(cin,profile,' '); // implementing getline() function with a delimiting character. cout<<\' profile is :\'<<p>In the above code, we take the user input by using getline() function, but this time we also add the delimiting character('') in a third parameter. Here, delimiting character is a space character, means the character that appears after space will not be considered.<p></p> <p> <strong>Output</strong> </p> <pre> Enter your profile : Software Developer Profile is: Software </pre> <h3>Getline Character Array</h3> <p>We can also define the getline() function for character array, but its syntax is different from the previous one.</p> <p> <strong>Syntax</strong> </p> <pre> istream& getline(char* , int size); </pre> <p>In the above syntax, there are two parameters; one is <strong>char</strong> *, and the other is <strong>size</strong> .</p> <p> <strong>Where,</strong> </p> <p> <strong>char*:</strong> It is a character pointer that points to the array.</p> <p> <strong>Size:</strong> It acts as a delimiter that defines the size of the array means input cannot cross this size.</p> <p> <strong>Let's understand through an example.</strong> </p> <pre> #include #include using namespace std; int main() { char fruits[50]; // array declaration cout<< 'Enter your favorite fruit: '; cin.getline(fruits, 50); // implementing getline() function std::cout << ' Your favorite fruit is :'<<fruits << std::endl; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Enter your favorite fruit: Watermelon Your favorite fruit is: Watermelon </pre> <hr></fruits></pre></\' profile>
Getline 문자 배열
문자 배열에 대해 getline() 함수를 정의할 수도 있지만 해당 구문은 이전 구문과 다릅니다.
자바가 현재 날짜를 가져오는 중
통사론
istream& getline(char* , int size);
위 구문에는 두 개의 매개변수가 있습니다. 하나는 숯 *이고, 다른 하나는 크기 .
어디,
숯*: 배열을 가리키는 문자 포인터입니다.
크기: 이는 배열의 크기를 정의하는 구분 기호 역할을 하며 입력이 이 크기를 넘을 수 없음을 의미합니다.
예를 통해 이해해 봅시다.
#include #include using namespace std; int main() { char fruits[50]; // array declaration cout<< 'Enter your favorite fruit: '; cin.getline(fruits, 50); // implementing getline() function std::cout << ' Your favorite fruit is :'<<fruits << std::endl; return 0; } < pre> <p> <strong>Output</strong> </p> <pre> Enter your favorite fruit: Watermelon Your favorite fruit is: Watermelon </pre> <hr></fruits>
\' profile>\' hello>' hello>