목록Programming (115)
Nagie's DevStory
C++에서 C의 fseek()처럼 사용할 수 있는 함수가 있다. ifstream과 ofstream에 클래스에 포함된 seekg() 와 seekp()이며 C의 fseek() 처럼 파일 내에서 위치를 이동할 수 있다. #include #include int main() { std::ifstream inputFile("example.txt"); if (inputFile.is_open()) { inputFile.seekg(5); // 파일 내에서 5바이트 위치로 이동 char c; inputFile >> c; std::cout
C++에서 파일 입출력을 하기 위해선 헤더 파일을 사용해야 한다. 기본적으로 다음 3가지 유형의 스트림 클래스를 제공한다. 1. ofstream Output File Stream의 약자고 파일에 데이터를 쓰기 위한 스트림 클래스다. 2. ifstream Input File Stream의 약자고 파일로부터 데이터를 읽기 위한 스트림 클래스다. 3. fstream File Stream의 약자고 파일을 읽고 쓰기 위한 스트림 클래스다. 아래는 파일 입출력의 기본적인 사용 방법에 대한 예시이다. 파일 쓰기 (Output) #include #include int main() { std::ofstream outputFile("example.txt"); // 파일을 쓰기 위한 스트림 생성 if (outputFile...
스마트 포인터는 동적으로 할당된 메모리를 관리하고 해제하는 데 도움을 주는 기능 중 하나다. 기존의 포인터는 동적 메모리를 사용할 때 new와 delete로 직접 관리를 해줘야 했지만 스마트 포인터를 사용하면 타 언어의 GC랑 유사하게 동작한다. 스마트 포인터의 종류는 3가지이며 헤더에 정의되어 있다. 그러면 각각의 스마트 포인터에 대해 알아보겠다. 1. shared_ptr 이름에서부터 어떤 목적으로 사용되는지 감이 오는 이 포인터는 여러 스마트 포인터가 같은 메모리 리소스를 공유할 수 있으며 리소스에 대한 참조 횟수를 추적하고, 참조 횟수가 0이 되면 자동으로 메모리 해제를 한다. 'shared_ptr'은 동적으로 할당된 메모리가 여러 객체를 참조할 때 유용하게 사용할 수 있다. #include int..
C++에서 C 스타일의 형변환을 사용할 수 있지만 권장하지는 않는다. 보기엔 조금 복잡해 보일 수는 있지만 C++에서 제공하는 형변환 연산자를 사용하는 게 권장되며 총 4가지 형변환 연산자가 있다. 1. static_cast 'static_cast'는 C++에서 보편적으로 사용되는 형변환 연산자로 컴파일러가 자동으로 변환할 수 있는 형식 간의 형변환을 해준다. 간단하게 정수를 실수로 변환하거나 서브 클래스 포인터를 슈퍼클래스 포인터로 변환할 때 사용된다. //static_cast의 사용법 int integerNumber = 42; double doubleNumber = static_cast(integerNumber); 2. dynamic_cast 'dynamic_cast'는 주로 다형성을 다룰 때 사용되..
람다식은 C++11 부터 도입된 기능이며 익명 함수를 정의해 사용하는 방법이다. 람다식은 간결하고 가독성이 높은 코드를 작성하는 데 도움을 주기 위해 만들어진 문법이지만 때론 가독성을 챙기기 위해 사용한 람다식이 되려 가독성을 해치는 원인이 되기도 해 사용 시 주의가 필요하다. 람다식은 다음과 같이 사용할 수 있다. [캡처 목록](매개변수 목록) -> 반환형식 { // 람다식의 본문 } '[캡처 목록]'은 람다식에서 외부 변수를 캡처하는 방법을 지정한다. 외부 변수에 대한 읽기 또는 쓰기 액세스를 허용하거나 제한할 수 있다. 기호는 '=' 또는 '&'를 사용할 수 있으며 '='을 지정 시 값을 받아올 수는 있어도 값을 바꾸는 것은 불가능하며 '&' 지정 시 변수에 대한 참조를 받아올 수 있기에 람다식에서..