분류 전체보기(43)
-
[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 -
[Visual Studio 2019] 데이터를 16진수로 표시하는 법
데이터 팁에서 우클릭 후 `16진수로 표시` 선택• 데이터 팁 : 디버깅 후 변수에 마우스 커서를 댔을 때 뜨는 데이터 창 10진수로 되돌리고 싶다면 다시 우클릭 후 `16진수로 표시`를 선택하여 체크를 해제하면 된다. 또는 로컬 창에서 우클릭하여 변경할 수도 있다.
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++] 구조체 · 클래스 템플릿으로 리스트 구현
코드를 작성할 때 노드는 구조체로, 리스트는 클래스로 만들었지만, C++에서 클래스와 구조체는 같아졌기 때문에 어떤 것을 사용하든 크게 상관은 없다.구조체도 생성자, 소멸자, 상속이 가능해졌다.단, 클래스와 구조체의 차이점은 범위 지정자의 기본값이 다르다는 것이다.구조체는 public이고 클래스는 private이다. 구조체와 클래스 중 어떤 것을 사용할지 모르겠을 때, 나름의 규칙을 만들면 좋다.ex) 기능이 많지 않을 때(단순히 데이터를 묶어놓고 데이터를 저장하는 등)는 구조체 키워드를, 리스트처럼 컨테이너로써의 복잡한 기능이면 클래스로 선언한다. ※ 구조체 템플릿은 구조체가 아니다.프로그래머는 넣은 데이터가 노드 단위인 것을 알 필요가 없어야 된다.다시 말해서, 리스트에 데이터를 넣을 뿐, 데이터를 ..
2024.03.18