danbibibi
article thumbnail
[C/C++] 공백을 포함한 파일을 문자열 변수에 쓰기
언어/C, C++ 2024. 5. 27. 09:24

#include #include #include int main(){ std::string response = ""; std::ifstream file("/tmp/response.json"); std::stringstream buffer; buffer

article thumbnail
CMake, CMakeLists.txt 정리
언어/C, C++ 2024. 2. 19. 10:42

CMake빌드 파일을 생성해주는 프로그램  ( = Makefile, .ninja를 자동으로 생성해주는 프로그램)Makefile은 간단한 프로젝트를 관리하기 좋지만, 프로젝트 크기가 커지거나 여러 플랫폼에서 배포할 때 불편한 점이 많음CMake를 사용 시 프로젝트 최상위 디렉토리에 CMakeLists.txt 파일이 있어야 함해당 파일에는 반드시 "CMake 프로그램의 최소 버전" 과 "프로젝트 정보"가 포함되어야 함주석은 '#' 으로 작성 #기본 템플릿# CMake 프로그램의 최소 버전cmake_minimum_required(VERSION 3.11)# 프로젝트 정보project( ModooCode VERSION 0.1 DESCRIPTION "예제 프로젝트" LANGUAGES CXX)# 라이브러리 파..

article thumbnail
make, Makefile 정리
언어/C, C++ 2024. 2. 13. 16:38

make SW 개발을 위해 유닉스 계열 운영체제에서 사용되는 프로그램 빌드 도구 어떤 파일들을 컴파일 하고, 어떤 방식으로 컴파일 할 지 직접 컴파일러에게 알려줘야 함 프로젝트의 크기가 커지고 파일들이 많아진다면 매번 명령어를 치기는 힘들어짐 이 문제를 해결하기 위해 리눅스에서는 make 라는 프로그램을 제공 make 프로그램은 Makefile을 읽어서 주어진 방식대로 명령어를 처리함 즉, make 명령어를 통해 make 프로그램은 Makefile을 읽고, 많은 수의 파일들을 명령어 한번으로 컴파일 할 수 있음 또한, Increment Build를 수행한다는 장점이 있음 (단순 shell script 작성과의 차이점) 💡 빌드(build) 컴파일 언어를 실행파일로 변환하는 과정 (컴파일 + 링크) > 컴..

article thumbnail
[C++] stringstream
언어/C, C++ 2024. 1. 2. 16:29

stringstream주어진 문자열에서 필요한 자료형의 데이터를 추출할 때 유용하게 사용 공백과 '\n'을 제외하고 문자열에서 맞는 자료형의 정보를 추출stream.str(string str): 현재 stream의 값을 문자열 str로 변환// swapping ostringstream objects #include // std::string #include // std::cout #include // std::stringstream int main () { std::stringstream ss; ss > bar; std::cout

article thumbnail
RapidJSON 정리
언어/C, C++ 2023. 12. 27. 15:37

RapidJSON SAX/DOM 스타일 API를 모두 갖춘 C++용 빠른 JSON parser/generator Install 별도의 설치는 필요하지 않다. git clone을 받은 후 include 폴더 내 rapidjson 폴더를 src 폴더와 같은 경로에 위치 시켜 사용할 수 있다. $ https://github.com/Tencent/rapidjson.git RapidJSON 사용 // 입력 JSON을 JSONx 형식으로 변환하는 command line tool // rapidjson/example/simpledom/simpledom.cpp` #include "rapidjson/document.h" #include "rapidjson/writer.h" #include "rapidjson/string..

article thumbnail
json-c 정리
언어/C, C++ 2023. 12. 26. 11:09

json-c JSON 객체를 C로 쉽게 구성하고 JSON 포맷된 문자열로 출력하여 JSON 포맷된 문자열을 다시 JSON 객체의 C 표현으로 파싱할 수 있는 reference counting object model을 구현하는 라이브러리 Install (e.g. Ubuntu 16.04.2 LTS) $ sudo apt install libjson-c-dev libjson-c3 $ vi src/main.cpp $ g++ src/main.cpp -ljson-c $ ./a.out // main.cpp #include #include using namespace std; int main(int argc, char **argv) { json_object *myobj, *dataobj; // 메모리 할당 myobj =..

article thumbnail
[C++] Standard Template Library - STL
언어/C, C++ 2023. 8. 24. 13:34

C++ 템플릿 라이브러리(STL)라고 하면 보통 다음 세 개의 라이브러리를 의미함 임의 타입의 객체를 보관할 수 있는 컨테이너 (container) 컨테이너에 보관된 원소에 접근할 수 있는 반복자 (iterator) 반복자들을 가지고 일련의 작업을 수행하는 알고리즘 (algorithm) 시퀀스 컨테이너 시퀀스 컨테이너 (sequence container) : 배열 처럼 객체들을 순차적으로 보관 연관 컨테이너 (associative container) : 키를 바탕으로 대응되는 값을 찾아줌 vector 가변 길이의 배열이라고 볼 수 있음 원소들이 메모리 상에서 실제로 순차적으로 저장되어 있음 따라서 임의의 위치에 있는 원소에 매우 빠르게 접근할 수 있음 #include #include using names..

article thumbnail
[C++] 객체 지향 프로그래밍
언어/C, C++ 2023. 8. 16. 16:02

객체 instance variable(변수)와 instance method로 구성 추상화(abstraction) : 컴퓨터 상에서 현실 세계를 100% 나타낼 수 없기 때문에, 적절하게 컴퓨터에서 처리할 수 있도록 바꾸는 것 캡슐화(encapsulation) : 외부에서 직접 인스턴스 변수의 값을 바꿀 수 없고 항상 인스턴스 메소드를 통해서 간접적으로 조절하는 것 캡슐화의 장점 객체가 내부적으로 어떻게 작동하는지 몰라도 사용할 줄 알게 된다!! 클래스 객체의 설계도 클래스를 이용해서 만들어진 객체 = 인스턴스 Animal:: Aniaml 클래스에 정의된 함수임을 의미 #include class Animal { private: int food; int weight; public: void set_anima..

article thumbnail
[C++] new, delete
언어/C, C++ 2023. 8. 14. 12:35

new = c 언어의 malloc delete = c 언어의 free // type* pointer = new type; #include int main() { int* p = new int; *p = 10; std::cout > list[i]; } for (int i = 0; i < arr_size; i++) { std::cout

article thumbnail
[C++] 참조자(reference)
언어/C, C++ 2023. 8. 14. 11:01

참조자(reference) C++에서 다른 변수나 상수를 가리키는 또 다른 방법 C 에서는 어떠한 변수를 가리키고 싶을 땐 반드시 포인터를 사용했음 참조자는 가리키고자 하는 타입 뒤에 &를 붙여 표현 참조자는 정의 시에 반드시 누구의 별명인지를 명시해야 함 int& // int형 변수의 참조자 double& // double형 변수의 참조자 int*& // int* (int형 포인터) 타입의 참조자 int& another_a; // 불가능 int& another_a = a; // 가능 int* p; // 포인터의 경우는 가능 한번 어떤 변수의 참조자가 되버린다면, 더이상 다른 변수를 참조할 수 없음 int a = 10; int &another_a = a; // another_a 는 이제 a 의 참조자! ..

article thumbnail
[C++] namespace
언어/C, C++ 2023. 8. 11. 14:04

다음은 hello, world! 를 출력하는 간단한 cpp 프로그램이다. #include int main() { std::cout

article thumbnail
[C] 포인터
언어/C, C++ 2023. 6. 29. 11:37

포인터 다른 변수, 혹은 그 변수의 메모리 공간주소를 가리키는 변수 포인터도 하나의 타입 메모리에 직접 접근, 제어 가능 (즉, 포인터 = 메모리 주소와 연관되어 있는 문법) 포인터 변수의 크기는 운영체제의 bit 수에 따라 달라짐 32bit(4byte) / 64bit(8byte) NULL, nullptr 키워드를 이용하여 초기화 가능 초기화가 이루어지지 않는 경우, 임의로 저장된 주소의 값에 마음대로 접근해서 변경해버리면, 최악의 상황에는 프로그램 메모리가 꼬여서 프로그램이 날아갈 수 있기 때문에 초기화가 중요! char *pc = NULL; // char형 변수의 주소 값 int *pi = nullptr; // int형 변수의 주소 값 double *pd; // double형 변수의 주소 값 포인터 ..