본문 바로가기
반응형

분류 전체보기424

C++ 타입(형) 변환 (Type conversion, Type Casting) [C/C++] 타입(형) 변환 (Type conversion, Type Casting) 자료형 변환이란 char형을 int로 바꾸거나 int를 double로 바꾸는 식으로 자료형 타입을 바꾸는 것을 말한다.C언어에서 다른 타입끼리의 연산은 우선 피연산자들을 모두 같은 타입으로 만든 후에 수행된다.이처럼 하나의 타입을 다른 타입으로 바꾸는 행위를 타입 변환(type conversion)이라고 한다.타입 변환은 크게 두 가지 방식으로 나눌 수 있다.묵시적 타입 변환(자동 타입 변환, implicit type conversion)명시적 타입 변환(강제 타입 변환, explicit type conversion)묵시적 타입 변환(자동 타입 변환, implicit type conversion)컴파일러가 자동으로 실.. 2022. 12. 14.
C++ 한글 문자, 한글 문자열 출력 wchar_t [C/C++] 한글 문자, 한글 문자열 출력 wchar_t기존 char 형식은 ASCII 코드를 표현할 수 있는 문자 형식이다.ASCII코드는 128가지의 문자를 표현하므로 1byte의 크기로 다 표현 가능하다.하지만 한글을 표현하기에는 1byte크기로 부족하다. 2byte형식의 자료형이 필요한데, 그 크기를 지원하는 데이터 형식이 wchar_t이다. 기존 char 형식으로 한글 문자를 출력하게 된다면 컴파일러는 ‘ㄱ’의 시작 주소부터 2byte를 읽어 엉뚱한 문자를 출력하게 될 것이다.#include //표준 입출력 헤더int main(){ char ch = 'ㄱ'; printf("%c\n", ch); return 0;}2011년 ISO(국제 표준화 기구)에서 각 지역에 맞는 언어.. 2022. 12. 13.
C++ STL 컨테이너 Vector의 재할당 확인하기 [C++/STL] 컨테이너 Vector의 재할당 확인하기 컨테이너는 공간이 부족하면 자동으로 공간을 재할당 한다.크기를 정해놓지 않고 사용하는 경우가 많은데 Vector에 자료가 추가되면서 재할당 하는 빈도수가 많은 것을 확인하였다. #include #include using namespace std;int main(){ vector vec; vector::iterator vecIter; vec.push_back(0); vecIter = vec.begin(); cout 실행 결과를 보면0번 데이터를 넣을 때의 주소는 00000149BB61D950 이다. 하지만 데이터를 추가하고 나서 주소가 빈번하게 바뀌는 것을 알 수 있다.1번 째 반복 0 : 00000149BB6203D0 1 : 00000149BB62.. 2022. 12. 11.
C++ STL List의 저장 공간 [C++/STL] List의 저장 공간 List는 양방향 연결 구조를 가지고 있다.데이터를 뒷 부분에 추가할 때 다음과 같은 일이 일어난다.1. 6번에 데이터를 추가한다.2. 빈 공간(임의 7번)을 찾는다.3. 6번에 2번에서 찾은 7번의 주소를 연결한다.4. 7번에 6번 주소를 연결한다.5. 7번을 마지막 원소로 지정한다.따라서 리스트는 빈 공간을 계속 찾아 연결하기 때문에 연속된 공간에 할당이 되지 않는다.예제로 확인한다.#include #include using namespace std;int main(){ list _list; list::iterator listIter; _list.push_back(0); listIter = _list.begin(); for (int i = 0; i 2022. 12. 11.
C++ STL 반복자(iterator) 사용법 [C++/STL] 반복자(iterator) 사용법iterator 는 포인터다.컨테이너에 저장되어 있는 원소들을 공통적인 방법으로 하나씩 접근할 수 있게 해준다.모든 컨테이너들은 iterator를 지원한다.  선언 방법STL타입::iterator 이름;vector::iterator veciter;vector::const_iterator veciter; vector.begin() = 시작 주소를 가리킴vector.end() = 제일 마지막 다음 값을 가리킴#include #include #include #include using namespace std;int main(){ vector vec; deque deq; list _list; vector::iterator vecIter; deque::iterato.. 2022. 12. 11.
C++ STL 컨테이너(Container) 사용법 [C++/STL] 컨테이너(Container) 사용법컨테이너 구성 요소1. 연속 컨테이너(Sequence Container) : 정렬되지 않은 컨테이너     - 벡터 (Vector), 디큐(Deque), 리스트(List)2. 연관 컨테이너(Associative Container) : 정렬 된 컨테이너      - 셋(Set), 멀티셋(MultiSet), 맵(Map), 멀티맵(MultiMap),         순서가 정해지지 않은(Unordered set, multiset, map, multimap)3. 컨테이너 어댑터(Container Adapter) : 컨테이너 위에서 돌아가는 자료구조      - 스택(Stack), 큐(Queue), 우선순위큐(Priority_Queue)  1. 연속 컨테이너(Se.. 2022. 12. 11.
C++ STL(Standard Template Library)란? [C++] STL(Standard Template Library)란? STL이란 Standard Template Library의 약자로 프로그래머가 자료구조와 알고리즘을 알지 못해도 사용할 수 있도록 제공되는 라이브러리다.* 자료구조를 직접 구현하지 않고 가져다 쓸 수 있게 준비해둔 것 표준 STL은 std namespace 안에 있다. STL은 컨테이너(Container) + 반복자(Iterator) + 알고리즘(Algorithm)의 구성요소를 제공한다. 컨테이너(Container)컨테이너는 크게 연속 컨테이너(Sequence Container), 연관 컨테이너(Associative Container), 컨테이너 어댑터(Container Adapter) 로 나뉜다. 연속 컨테이너(Sequence Con.. 2022. 12. 11.
C++ Vector 선언 및 초기화 [C/C++] Vector 선언 및 초기화 vector 이름vector v;- 비어있는 vector v를 생성합니다.vector v(5);- 기본값(0)으로 초기화 된 5개의 원소를 가지는 vector v를 생성합니다.vector v(5, 2);- 2로 초기화된 5개의 원소를 가지는 vector v를 생성합니다.vector v1(5, 2);vector v2(v1);- v2는 v1 vector를 복사해서 생성됩니다.v.assign(5, 2);- 2의 값으로 5개의 원소 할당.v.at(idx);- idx번째 원소를 참조합니다.- v[idx] 보다 속도는 느리지만, 범위를 점검하므로 안전합니다.v[idx];- idx 번째 원소를 참조합니다.- 범위를 점검하지 않으므로 속도가 v.at(idx)보다 빠릅니다.v.. 2022. 12. 8.
C++ Error(VS) "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다. [C/C++] Error(VS) "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다.위와 같은 코드가 비주얼 스튜디오 2015에서는 잘 되는데 2017부터는 오류가 발생한다. 해결책1. const를 붙인다.2. 프로젝트 > 속성 > C/C++ > 언어 > 준수모드 > 아니오 변경 2022. 12. 8.
C++ conio.h 키보드 입력 받기 [C/C++]  키보드 입력 받기의 kbhit함수는 버퍼에 값이 있으면 1, 없으면 0을 리턴한다.즉, 입력이 있으면 1, 없으면 0이다. 입력한 결과를 가져오는 함수는 _getch(); 인데, ASCII코드 값을 알고 있다면 사용이 수월하다. #include #include int main(){ while(true) { if(kbhit()) { int inputNum = _getch(); if(inputNum == 'a') printf("a를 입력했습니다."); } }} 2022. 12. 8.
C++ Windows.h 콘솔창 지우기, Sleep [C/C++] 콘솔창 지우기의 대표적인 기능은 콘솔창을 지우는 것과 스레드를 잠시 멈추는 것이 있다.화면이 지저분해지거나 갱신이 필요할 때 system("cls") 를 사용하면 깨끗하게 지워진다.#include #include int main(){ printf("Hello World"); system("cls"); return 0;} [C/C++]  Sleep()기능 중 프로그램을 잠시 멈추는 방법이 있다. Sleep() 함수다.#include #include int main(){ for (int i = 0; i 위 코드는 1초마다 i를 출력한다.Windows 환경에서 Sleep() 함수의 단위는 ms이다. 2022. 12. 8.
C++ 다차원 배열 [C/C++] 다차원 배열다차원 배열이란 2차원 이상의 배열을 의미하며, 배열 요소로 또 다른 배열을 가지는 배열을 의미한다. 2차원 배열은 배열의 요소로 1차원 배열을 가지는 배열이다. 2차원 배열의 문법은 다음과 같다.타입 배열이름[열의길이][행의길이];2차원 배열의 모습을 도식화 한 것이다.3차원 배열은 배열의 요소로 2차원 배열을 가지는 배열이다.2차원 배열이 평면이였다면 3차원 배열은 입체감을 가진다.4차원 배열도 만들수는 있지만, 사용하지 않을 뿐더러 이해하기도 어렵다. 2022. 12. 8.
반응형