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
Shell Script 문법 정리
언어/기타 2023. 12. 13. 10:05

Shell운영체제 상에서 사용자가 입력하는 명령을 읽고 해석하여 대신 실행해주는 프로그램운영체제의 커널과 사용자를 이어주는 역할사용자의 명령어를 해석하고 운영체제가 알아들을 수 있도록 도와주는 명령어 해석기 Shell ScriptShell에서 사용할 수 있는 명령어들의 조합을 모아서 만든 배치 파일운영체제의 Shell을 이용하여 한줄씩 순차적으로 읽으면서 명령어들을 실행시켜주는 인터프리터 방식의 프로그램Shell Script를 활용하여 묶어진 명령어 조합을 수행하거나 반복적인 명령어를 단일 명령으로 쉽게 사용할 수 있음 기본 문법파일로 작성 후, 파일을 실행파일의 가장 위 첫 라인은 #!/bin/bash로 시작파일 형식(확장자): '파일이름.sh'쉘 스크립트 파일은 코드를 작성한 후에는 실행 권한 부여 ..

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형 변수의 주소 값 포인터 ..

article thumbnail
C, C++, JAVA, Python
언어/기타 2023. 5. 8. 20:30

C 절차지향적 언어 컴파일러 언어 (기계어로 변환된 후 실행 ) Low Level 언어 ( 어셈블리어 수준으로 하드웨어 제어 가능 ) 시스템 자원을 개발자가 직접 제어할 수 있음 시스템과 하드웨어 제어, 운영 체제 개발 등의 영역에서 주로 사용 C++ 컴파일러 언어 객체지향 언어 엄격한 타입 체크 개임 개발에 많이 사용 객체 지향 프로그래밍은 코드의 재사용성을 높이고 유지보수를 용이하게 하는 등 생산성을 높이는 특징을 가지고 있음 JAVA 객체지향 언어 Garbage Collection 지원 인터프리터와 컴파일러를 모두 사용 웹 서비스 개발, 안드로이드 앱 개발에 주로 사용 Javac(Java Compiler)를 이용해 소스코드를 .class 파일로 컴파일하고, 이후 JVM의 인터프리터에서 바이트코드를 ..

article thumbnail
[JAVA] 기본
언어/JAVA 2022. 12. 29. 20:57

1학년 때 JAVA를 처음 배우고, 2학년 이후로는 JAVA를 쓸 일이 거의 없었던 것 같다. (그래도 1학년 때 나름 JAVA 공부 열심히 해뒀음 ㅎ) 현업에서는 JAVA를 많이 사용한다고 하니,,, SSAFY 입과 전에 열심히 복습해 보겠어 😎 (if, for, while 문 같은 내용은 정리하지 않았다! java 적인 것? 위주로 정리했다.) JAVA 객체 지향적 언어 (↔ 절차 지향적 언어) write once run anywhere (동일한 프로그램이 운영체제 가리지 않고 실행) * WROA - 현대에는 자바뿐만 아니라 대부분의 프로그래밍 언어가 이를 일부분에서 모두 지원 객체지향 프로그래밍 Object-Oriented Programming 로직을 상태(state)와 행위(behave)로 이루어..