Programming Language/C++(27)
-
[C++] wchar_t 배열 함수 - wcslen(), wcscat_s(), wcscmp(), wcscpy_s()
아래 링크 클릭 시 해당 본문으로 이동wcslen()wcscat_s()wcscmp()wcscpy_s()해당 본문 내용은 문자열 함수 본문과는 char와 wchar_t 차이지, 대부분의 내용은 거의 비슷하다.겹치는 내용은 최대한 제외했다.참고 링크• 문자열 함수wcslen(), wcscat_s(), wcscmp(), wcscpy_s()헤더 파일// wcslen(), wcscat(), wcscmp()를 사용하려면 아래 헤더 파일을 불러와야 한다.#include wcslen()• 문자열의 길이를 반환하는 함수▶ 함수 원형size_t wcslen(const wchar_t* _String);// 와이드 문자열의 시작 주소를 가리킨다.▷ 예시#include int main(){ wchar_t cName[10] =..
2024.03.27 -
[C++] 문자열 함수 - strlen(), strcat_s(), strcmp(), strcpy_s()
아래 링크 클릭 시 해당 본문으로 이동strlen()strcat_s()strcmp()strcpy_s()`strcat()`, `strcpy()`는 버퍼 오버플로우를 일으킬 가능성이 있어, 안전하지 않은 함수로 간주되어 오류가 발생한다.그래서 좀 더 안전한 함수인 각각 `strcat_s()`, `strcpy_s()`를 사용하기를 권장한다.strlen(), strcat_s(), strcmp(), strcpy_s()헤더 파일// strlen(), strcat_s(), strcmp(), strcpy_s()를 사용하려면 아래 헤더 파일을 불러와야 한다.#include // C 방식#include // C++ 방식 strlen()• 문자열의 길이를 반환하는 함수▶ 함수 원형함수 원형(Function Protot..
2024.03.27 -
[C++] 문자열
아래 링크 클릭 시 해당 본문으로 이동문자열배열 vs. const 포인터문자열 수정하는 법문자열• 문자열 = 주소값문자열은 주소값을 반환하므로 포인터로 주소에 접근한 곳에 문자열이 존재한다.• 문자열 리터럴은 작성한 코드 그 자체이고, 컴파일러에 의해 읽기 전용 메모리(ROM, Read Only Memory)에 저장된다.• 문자열 리터럴은 불변(Immutable)인데, 이는 프로그램 안전성을 높이고, 동일한 리터럴을 재사용하여 컴파일러가 메모리 사용을 최적화할 수 있도록 한다.• 문자열 리터럴은 프로그램 실행 도중에 실시간으로 데이터에 접근해서 수정할 수 없게 보호되고 있다.• 문자열 리터럴(string literal)큰따옴표(`""`)로 묶인 문자 시퀀스, 또는 와이드 문자의 경우 `L` 접두사가 붙고..
2024.03.26 -
[C++] 스트림(stream), 버퍼(buffer)
스트림과 버퍼는 입출력(I/O)과 관련이 있다.C++ 프로그램은 파일이나 콘솔의 입출력을 직접 다루지 않고 스트림(stream)이라는 흐름을 통해 다룬다.스트림(stream)• 입출력을 처리하는 데 사용되며, 바이트(byte) 단위의 데이터 흐름을 의미한다.• 입력 스트림(`std::cin`)과 출력 스트림(`std::cout`)을 제공한다.• 운영체제에 의해 생성되는 가상의 연결 고리를 의미하며, 중간 매개자 역할을 한다.• 스트림은 내부에 버퍼라는 임시 메모리 공간을 가지고 있다.장점• 다양한 데이터 소스(파일, 콘솔 등)에서 읽고 쓰는 작업을 단순화한다.• `std::cin`, `std::cout`처럼 이해하기 쉬운 인터페이스를 제공한다.단점• 데이터가 작으면 스트림이 직접 I/O하는 것보다 느릴 ..
2024.03.26 -
[C++] 주석(Comment), 세미콜론(;)
아래 링크 클릭 시 해당 본문으로 이동주석(Comment)세미클론주석(Comment)• 코드에 대한 설명을 추가적으로 적고 싶을 때 사용한다. ex) 법적인 내용, 코드에 대한 중요한 정보, 코드의 역할 및 의미 등주석 종류 한 줄 / 여러 줄설명// 한 줄• 같은 줄에 있는 문자열을 주석 처리한다./* */ 여러 줄• /*와 */ 사이에 있는 문자열을 주석 처리한다.// \ 여러 줄• 한 줄 주석(//) 뒤에 \를 쓰면 그 다음 줄도 주석 처리된다.• '\'를 쓰지 않으면 다음 줄은 주석처리 되지 않는다.#if 0#endif여러 줄• 전처리기를 이용한 주석 기능이다.• #if 0과 #end if 사이에 들어가는 문자열은 전부 주석 처리된다.• if 0 → if 1 : 주석 처리가 해제된다. ▷ 예시/..
2024.03.25 -
[C++] 문자
아래 링크 클릭 시 해당 본문으로 이동문자char, char*, char[]wchar_tchar8_tchar16_tchar32_t표현 방식이 정수형인 문자형자료형크기 (byte)char1wchar_t2char8_t1char16_t2char32_t4• 문자에 해당하는 값을 저장하는 정수형이다.• ASCII에 속하지 않는 문자(한글, 중국어, 이모지 등)는 `wchar_t`, `char16_t`, `char32_t`와 같은 문자형을 사용하며, UTF-16 또는 UTF-32와 같은 인코딩을 활용한다.• C++에서는 유니코드 문자 처리를 위해 `char8_t`, `char16_t`, `char32_t`가 도입되었다.이는 유니코드 인코딩에 최적화되어 있다.더보기VS 프로젝트 기본 속성은 유니코드이다.(솔루션 탐색..
2024.03.24 -
[C++] namespace, using, 입출력 구현 (cin, cout)
`main.cpp`#include // *네임 스페이스namespace MYSPACE{ int g_int; // 전역 변수}namespace OTHERSPACE{ int g_int;}// *using// 개별적, 세부적으로 해제using std::cout;using std::wcout;using std::cin;using std::endl;// *endl// endl도 함수이다.// 이 함수가 호출되면 커서가 아래로 하나 내려갈 뿐이다.// 이 함수는 operator >>와 operator > (int& _idata) // _idata는 해당 멤버 함수 내의 지역 변수이다. // int a = 0; // mycout >> a; // a에 입력이 되어야 한다. (ex. 100을 입력하면 a에 입력된다...
2024.03.19 -
[C++] 동적 할당, malloc()/free() vs. new/delete
아래 링크 클릭 시 해당 본문으로 이동정적 할당 vs. 동적 할당malloc()/free() vs. new/deletemalloc()/free()new/deletemalloc()는 free()를, new는 delete를 사용해야 하는 이유와 그렇지 않을 경우 발생하는 문제정적 할당 vs. 동적 할당1) 정적 할당• 프로그램 실행 전 컴파일 단계에서 메모리 공간을 할당받는 것프로그램 실행 전에 메모리의 크기가 결정되고 할당된 메모리는 운영체제가 알아서 해제시킨다.장점• 메모리 누수를 걱정할 필요가 없다. ➜ 할당한 메모리는 운영체제가 알아서 해제한다.단점• 메모리 공간의 크기가 정해져있어서 프로그램 실행 중에 수정할 수 없다. ➜ 메모리 공간을 낭비할 가능성이 있다.[ ] : 메모리 공간처음에 [100..
2024.03.15