power-girl0-0

[ C++ ] 출력 & 입력 본문

언어/C++

[ C++ ] 출력 & 입력

power-girl0-0 2021. 3. 16. 15:11
728x90

 

C++은 C언어 문법이 비슷하다.

전처리기로 c는 #include <stdio.h>를 사용한다면, c++에서는 #include <iostream>을 사용한다.


 출력 

먼저 출력에 대해서 알아보자.

c++에서는 printf("문장");를 std::cout << "문장"; 이런 방식으로 사용한다.

 

예제는 아래와 같다.

#include <iostream>

int main(){
	std::cout << "Hello";
    return 0;
}

 

 


 using namespace std 

보통 c++에서는 클래스로 이루어져 있어서, std라는 클래스를 사용하는 것을 명시하기 위해 설정해주는 것이다.

해당 언어에서는 printf를 표현하기 위해, 일일히 std::cout을 작성해야하는 번거로운 단점이 있다.

이를 해결하기 위해,  using namespace std를 선언해줘야 한다.

 

std에는 cout, cin, endl 등 자주 쓰이는 함수들이 정의 되어 있다.

따라서 using namespace std; 로 선언하면,  std::를 제외하고 cout만 적어서 사용이 가능하다.

아래는 이에 따른 예제이다.

#include <iostream>

using namespace std;

int main(){
	cout << "Dobbygation";
	return 0;
}

 

 


 입력 

입력은 c에서 scnaf를 사용하였다면, c++에서  std::cin >>변수명 이런 방식으로 사용한다.

예제를 통해서 알아보자.

#include <iostream>

using namespace std;

int main(){
	char a;
    
	cin >> a;
	cout <<"입력 받은 값은 "<< a <<"입니다.";
	
    return 0;
}

 

 

하지만 위에서 문제가 발생하는 것을 알 수 있다.

입력한 값은 Dobbygation인데, D만 입력되었기 때문이다.

 

이는, char자료형을 갖고 있기 때문이다.


그렇다면 string자료형으로 바꿔보자.

 

여기서 주의할 점은 c++에서 string은 다 소문자이다.

 

위와 같이, char자료형을 string으로 바꿔주면 입력받은 Dobbygation을 출력해주는 것을 알 수 있다.

 

 


하지만 여기서도 문제점이 하나 있다.

Dobby 후에 띄어쓰기를 하면, gation은 인식되지 않는다.

 

 

이는 cin으로 값을 입력받았기 때문이다.

cin은 띄어쓰기를 무시하며, 띄어쓰기 직전까지를 하나의 입력으로 받아들인다.

대신 그 이후의 문자를 버퍼에 남긴다.


띄어쓰기를 인식하여 값을 받아오려면, getline( )이라는 함수를 사용하면 된다.

getline( )은 enter를 직전까지 하나의 입력으로 받아들이며, 버퍼에 남기지 않는다.

 

사용 방법은 아래와 같다.

#include <iostream>
using namespace std;

int main(){
	string a;
    
	getline(cin, a);
	cout <<"입력 받은 값은 "<< a <<"입니다.";
	
    return 0;
}

 

 

 

 

 

728x90
Comments