전체 글(12)
-
[C++] std::cin, getline()
일반적으로 C++에선 cin과 getline()으로 문자열을 입력 받는다. 이글에서 1.cin 으로 std::string 에 문자열을 받는 방법 2.getline 으로 std::string 에 문자열을 받는 방법 3. 둘의 차이와 유의사항, 해결법 (cin.ignore) std::cin cin 은 기본적으로 버퍼에서 공백' '으로 구분하여 변수에 넣어준다. string str1; cin >> str1; string str2; cin >> str2; //cin >> str1 >> str2; // 입력을 공백 으로 구분하여 각 변수에 들어감 위 코드에서 하나씩 받을때, 같이 받을때 똑같이 공백으로 구분되어 들어간다. getline() 헤더에 포함되어있는 getline() 함수는 버퍼에서 '\n'(개행문자) ..
2021.02.22 -
[C++]R-value Reference,move Sementics
R-value Reference,move Sementics C++ 에서는 R-value Reference 를 지원한다. 다음과 같이 &&기호를 이용하여 사용할 수 있다. #include using namespace std; void doSomething(int& lef) { cout
2021.02.20 -
[C++] l-value,r-value
C++에서 코드를 작성 할때. 변수를 선언하고 값을 넣고, 리턴값을 받아오는 일을 자연스럽게 하게된다. value ,값의 위치,특성에 따라 l-value,r-value(좌측값 우측값) 으로 나뉘는데 이번에는 각각 value들이 어떤 의미인지 알아 보겠다. l-value 메모리를 할당받고 Scope 안에서 항상 접근, 수정 가능한 것. ex) 변수들, 객체의 instance r-value 임시적으로 잠간의 expression,표현 후 바로 사라지는 값. ex) 상수, 1,2 .. , 단순 자료형 return 값. int func() { int a= 1; reutnr a; } void main() { int x = 1; int y = func(); // r-value의 주소는 참조 할수 없다 int *p =..
2021.02.14 -
[C++] C -style string , std::string
C -style string string , std::string 코딩을 하다보면 종종 문자열을 다뤄야 하는 상황이 있다. C++ 에선 2가지 방법을 지원 하는데 C -style string string, std::string 에대해 알아보려 한다. C -style string C - style string 은 끝에 null을 가지는 char 형 배열이다. C++ 에서는 char 형 배열 마지막에 항상 null(''\0')을 추가해 준다. char str[] = "1234567"; cout
2021.02.11 -
[C++] Stack and Heap(feat. Memory Leak)
Stack and Heap 프로그램 실행시 컴퓨터가 내부에서 사용하는 메모리들중 Stack과 Heap이 있다. 이번에는 우리의 코드가 Stack과 Heap에 어떻게 들어가는지 알아보고 나아가 Memory leak 에대해 알아보겠다 기본구조 이처럼 코드가 메모리의 제일 아래에 있다 하면. 프로그램이 시작될때 .BSS - 초기화되지 않은 전역,Static변수들이 차지한다. .Data - 초기화된 전역,Stacic변수들이 차지한다. 그후, 프로그램이 실행되면서 Stack 과 Heap에 메모리를 쓰게 된다. Stack Stack 은 프로그램이의 코드들이 한줄씩 실행되면서 각각의 Scope, 그내부의 Local variable 이 들어오는 자리이다. ex) { }, functions, for{} while{} 제..
2021.02.11 -
[C++] Pointer vs Reference
Pointer vs Reference 보통 C 언어에서 변수를 가리킬땐 포인터를 사용 했다. C++ 에선 포인터 와 함께 레퍼런스(참조자) 라는 개념이 도입됬는데 그 둘의 특징과 차이점을 알아보자. Pointer 사용자가 접근하고 싶은 메모리의 주소를 담는 하나의 변수(Varilable) 이다. 그러므로 자기 자신의 주소를 가지고 있다. 어떤 자료형이든 고정된 크기를 가진다 32bit 시스템 - 4byte, 64bit 시스템 - 8byte de-reference operator를 이용하여 직접 적으로 가리키고 있는 메모리에 들어가 값을 다룰 수 있다. (* , 클래스나 구조체 에선 ->) Reference 사용자가 선언해둔 변수에 새로운 별명(aliance) 이다. 따로 de-refrence operat..
2021.02.11