ProgrammingLang/c++ 31

[C++ 개발자되기] 12. text file read 및 write

>>[C++ 관련 모든 글 보기] 1. 목표 text파일을 c++ style로 Read 및 Write하기 2. 필요 헤더 1) Read / Write - #include 2. 사용 하는 class 1) Read 할 떄 - std::ifstream("파일명" , "옵션") 2) Write 할 때 - std::ofstream("파일명" , "옵션") * 옵션 번호 옵션 설명 1 없음 기본 모드, 텍스트 모드 2 std::ios::banary 2진모드로 파일열기 * 참조 : [C++ 개발자되기] 8. binary file write 및 read 3 std::ios::app 파일의 끝에 추가한다 4 std::ios::ate 처음엔 파일의 끝에 추가되지만 그다음부턴 현재 위치에 추가된다 5 std::ios::in..

ProgrammingLang/c++ 2019.12.05

[C++ 개발자되기] 11. multi thread를 위한 lock 사용법

>>[C++ 관련 모든 글 보기] 1. lock 이란? multi Thread간의 동기화를 맞추기 위해서 사용하는 개념입니다. 이를 구현해 놓은 것이 c/c++에서는 mutex와 lock_guid 입니다. 2. lock은 꼭 필요 한가? multi thread 프로그램에서는 lock이 없다면 thead간 공유 데이터의 값이 엉망이 됩니다. 3. lock의 종류 1) mutex - c에서 부터 사용하던 lock 입니다. 2) lock_guard - mutex를 보다 안전 적으로 사용할 수 있게 제공되는 class 입니다. 4. lock 사용법 1) 기본 lock 사용자가 원하는 위치에서 lock을 걸고, 해제할 수 있습니다. int count(int n) { mutex.lock(); if( n < 10 )..

ProgrammingLang/c++ 2019.12.04

[C++ 개발자되기] 10. map 사용법

>>[C++ 관련 모든 글 보기] 1. map 이란? Key, Value 쌍인 데이터를 균형 binary tree로 관리하는 자료구조입니다. * 2진 트리 종류는 Red-Black Tree을 사용 2. map은 언제 쓰는가? 1) 입력하는 자료를 정렬해야 한다. 2) 많은 자료를 저장하고, 검색이 빨라야 한다 3) 빈번하게 삽입, 삭제하지 않는다. - 삽입, 삭제 시 자동 정렬이 발생하여 속도가 느려집니다. 3. map의 핵심 기능 1) find (1) map은 key가 있다면 vector처럼 Random access가 가능합니다. (2) iterator를 사용하여 순차적으로 검색이 가능합니다. 2) Insert (1) map은 자료를 삽입 시 내부에서 자동으로 Key 기준으로 오름차순 정렬(기본 정렬)..

ProgrammingLang/c++ 2019.12.02

[C++ 개발자되기] 9. type casting (cast operator)

>>[C++ 관련 모든 글 보기] 1. Type Casting이란? 변수의 type을 강제로 다른 type으로 변경하는 것을 말합니다. 2. 왜 필요 한가? C 나 C++ 변수의 type을 변경 해서 처리하는 경우가 비번 하게 발생합니다. 예를 들어 외부 library사용시 인자로 넘길 변수가 char인데 외부 library가 unsigned char를 사용할 경우 개발자는 char type을 unsigned char로 변경해서 넘겨주어야 Compile Error가 이 발생하지 않습니다 #include int PrintHello(unsigned char *str) { std::cout

ProgrammingLang/c++ 2019.11.15

[C++ 개발자되기] 8. binary file read 및 write

1. 목적 binary 및 text 파일을 읽기 및 쓰기 입니다. 파일 복사 및 암호화 파일 읽을때 유용합니다. 2. 필요 헤더 #include 2. 사용함수 1) Read 함수 (1) 함수 명 : ifstream (2) 핵심 옵션 : ifstream 핵심 옵션 std::ifstream::binary (3) 함수 선언 : explicit basic_ifstream( const char* filename, std::ios_base::openmode mode = ios_base::in ); (4) 참조 : https://en.cppreference.com/w/cpp/io/basic_ifstream 2) write 함수 (1) 함수 명 : ofstream (2) 핵심 옵션 : std::ios::out | st..

ProgrammingLang/c++ 2019.09.09

[C++ 개발자되기] 6. istringstream, ostringstream, stringstream 사용법

>>[C++ 관련 모든 글 보기] 1. istringstream과 ostringstream과 stringstream 은 무엇인가?? 문자열을 다룰 때 유용하게 사용 가능한 Class입니다. 1) istringstream - 문자열 포맷을 parsing 할 때 사용합니다. 2) ostringstream - 문자열 format을 조합하여 저장할 때 사용합니다. 3) sstringstream - 문자열에서 내가 원하는 자료형의 데이터를 추출할 때 사용합니다. 2. 헤더 정보 #include 를 include 하면 사용 가능합니다. 3. 기본 사용법 1) istringstream로 문자열 format을 분해 하기 - 다음 예제에서 space 또는 tap으로 구분된 "test 123 123hah ahha"를 각 ..

ProgrammingLang/c++ 2019.07.24

[C++ 개발자되기] 5. bind 사용법

>>[C++ 관련 모든 글 보기] 1. bind란 무엇인가?? 함수의 일부 매개 변수를 고정 값으로 세팅한 후, 한번 Wrapping 하여 사용할 수 있게 해주는 함수입니다. 2. 표준 시기 C++ 11에서 표준으로 채택 3. 사용 방법 bind를 할당하는 변수의 자료형에 따라 2가지 형태로 사용 가능 합니다 function 클래스를 사용하는 방법과 auto 키워드를 사용하는 방법 1) function Class를 사용(불편) std::function 변수명 = bind(함수명, 인자1, 인자 2,...); -> 함수명을 변수명에 연결시킵니다. 2) auito 키워드 사용(편리) auto 변수명 = bind(함수명, 인자 1, 인자 2,...); -> 함수명을 변수명에 연결시킵니다.. 물론 둘 다 사용 ..

ProgrammingLang/c++ 2019.07.23

[C++ 개발자되기] 4. lambda 사용법

>>[C++ 관련 모든 글 보기] 1. lambda는 무엇인가?? 1) 정의 - 이름 없는 함수입니다. 2) 형태 (1) 캡처 - Lambda 외부에서 정의한 변수를 Lambda 코드 부분에서 에서 사용하기 위해 선언 부분입니다. - 선언 방법의 종류는 다음과 같습니다. a. 복사 캡처 [ = ] 더보기 - 모든 변수나 상수를 복사로 캡처하고 현재 lambda객체에서 사용, - 전역(global) 범위까지가 그 캡처 범위입니다 b. 참조 캡쳐 [ & ] 더보기 - 모든 변수나 상수를 참조로 캡처하고 현재 lambda객체에서 사용 - 전역(global) 범위까지가 그 캡처 범위입니다 c. 현재 객체 캡쳐 [ this ] 더보기 - 클래스 멤버 함수안에서 정의되는 lambda는 [this]로 현재 객체를 참..

ProgrammingLang/c++ 2019.07.19

[C++ 개발자되기] 3. C++에서 Thread 사용법 (추가 정리 필요)

>>[C++ 관련 모든 글 보기] 1. thread관련 class는 무엇 인가?? 1) 표준 체택 시기 - C++11 에서 표준으로 채택 1) namesapce - std 2) Header - #include 3) class std::thread 2. thread 생성 방법 (4가지) 1) C 스타일 thread 생성 (함수 포인트 활용) (1) 사용법 thread(thread로 돌릴 함수, 넘길 인자); (2) 언제 쓰면 좋은가? - 2) Class의 Static 함수를 사용한 Thread 생성 (1) 사용법 thread(Class명:thread로 돌릴 함수, 넘길 인자); (2) 언제 쓰면 좋은가? - 3) Class의 멤버 함수를 사용한 Thread 생성 (1) 사용법 thread(Class명:th..

ProgrammingLang/c++ 2019.07.18

[C++ 개발자되기] 2. C++ Class의 필요성과 사용법

>>[C++ 관련 모든 글 보기] 1. C++에서의 Class의 목적 객체 지향 프로그래밍을 지원하기 위해 추가되었습니다. 2. 객체 지향 프로그래밍 이란 무엇인가? 프로그램을 기능 단위로 조각 내서 프로그래밍하는 것을 객체 지향 프로그래밍이라고 이해하면 됩니다. 3. 객체 지향 프로그래밍은 왜 필요한가? 먼저 객체 지향 프로그래밍의 필요성을 느끼기 위해서는 절차 지향형 프로그래밍의 단점을 이해해야 합니다. 절차 지향형 프로그래밍에서의 단점은 데이터와 데이터를 처리하는 함수의 연관성이 적은 것입니다. 이것이 왜 단점 이냐면 특정 Data와 연관 있는 함수들을 절차적으로 수행하고 있는데 이때 연관이 없는 함수를 섞을 놓을 경우 코드의 분석을 어렵게 하기 때문입니다. 예를 들어 TCP Server에서 Lis..

ProgrammingLang/c++ 2019.07.18