240305 수업일지

캐모마일·2024년 3월 5일

수업일지

목록 보기
3/9

자료구조시간에 배우는 cpp.

첫 코드는

#include <iostream>
using namespace std;

int main() {
	char arr[100];
	cout << "what's your name?\n";
	cin >> arr;
	cout << "hi" << " " << arr;
}

이였다.

using namespace std

using namespace std를 쓰면 cout cin 같은 std class 안에 있는 애들을 std::cout 같은 식으로 쓰지않게 해준다
그런데 이러면 단점이 다른 클래스의 같은이름을가진 애가 있으면 충돌이날수있는것.
유니티에서 자주 겪는걸 생각해보면 UnityEngine.Random과 System.Random의 경우가 있다.
그래서 using namespace std처럼 큰 틀을 하기보단
그냥 using std::cout 같이 특정 뭐야 그 이름만 가두는게 좋을 거 같다.

cout

문자 혹은 문자열을 출력해준다.

cout << "cout" << 'c';

cin

>> 를 통해 문자열을 받아 변수에 저장할 수 있다.
공백을 만나면 중단된다

char arr[100];
cin >> arr
cout << arr;

다른걸 좀 생략하긴했지만 이 경우 실행하고
ㅁㄴㅇㄹ ㅎ를 입력하면
ㅁㄴㅇㄹ 가 출력된다.

이렇게 정리를하고있었지만 체크 문제가 생겼다.

iostream을 빼면 무슨일이 생길까

iostream 라이브러리는 입출력을 하기 위해 필요하다.
뺴면 입출력을 못함

endl의 의미는 무엇일까

endl은 end line을 줄여둔것으로 std 클래스에 포함되어있다.
개행을 해준다. endl
이런식으로 endl
해준다.
또한 \n과 달리 endl은 출력버퍼를 비워준다고 한다
버퍼를 사용하면 입력하는 문자를 버퍼에 저장했다가 버퍼가 가득차거나 개행문자를 입력하면 한번에 전달하고
버퍼를 사용하지 않는 입력은 키보드가 입력할때마다 하나씩 전달한다고 한ㄷ ㅏ
버퍼를 비우는건 버퍼에 있는 문자열을 출력하는것인데
이것을 flush라고도할수잇다.
근데 이제 버퍼를 비우지 않는 출력문을 쓰고 sleep(time)을 하면
time만큼의 시간이 지나고 문자가 출력되면서 프로그램이 종료되는데
버퍼를 비우는 출력문을 쓰면 출력이 되고 나서 time만큼의 시간이 지난다.

이름과 소속을 출력하는 프로그램을 작성해보자

#include <iostream>
using namespace std;

int main() {
	char name[50];
    char sosok[50];
    
    cout << "이름과 소속 입력\n";
    cin >> name;
    cin >> sosok;
    
    cout << sosok << "의 " << name;
}

namespace는 왜필요한가

std::cout 처럼 써야하는 것을 편하게 쓸 수 있기 때문이 아닐까.
라고 생각했지만
namespace로 묶어서 사용하면 같은 이름의 메서드여도 namespace로 구분할 수 있기 때문이다.

C#에서
A class의 Hello() 메서드와 B class의 Hello() 메서드가 있어도
A.Hello(); 하고 B.Hello(); 해서 따로쓰는거처럼.
오늘은 여기까지.
return 0;

0개의 댓글