프로그래밍 언어/C++

    [C++] string > int 변환 (개인 작성)

    class MyString { string str; public: MyString() = default; MyString(string str) : str(str) { cout

    [C] 문자열에서 특정 문자 변경, 제거 그리고 중복 제거

    // 문자열에서 a 문자를 b 문자로 변경 // @param str 문자열 // @param cmp 바꾸고자 하는 문자 // @param rep 대체 문자 void ReplaceCharacter(char* str, char cmp, char rep) { if (str[0] == '\0') return; if (str[0] == cmp) str[0] = rep; ReplaceCharacter(str + 1, cmp, rep); } // 문자열에서 특정 문자를 제거 // @param str 문자열 // @param cmp 삭제하고자 하는 문자 void RemoveCharacter(char* str, char cmp) { if (str[0] == '\0') return; // 한 칸 씩 땡김 if (str[0..

    [C] 함수의 포인터 / 배열 매개변수

    함수의 매개변수로 배열 사용법 배열을 함수의 전달 인자로 사용하려면 배열의 변수명은 첫 번째 원소의 주소값이기 때문에 매개변수의 타입은 포인터가 되어야 한다. void 함수명(int* arr) { } 둘 다 동일한 의미를 지닌다 void 함수명(int* arr) { } void 함수명(int arr[]) { } #include #define Size 10 void Arrprint(int *Arr); void Arrprint2(int Arr[]); int main () { int i_arr[Size] = {1,2,3,4,5,6,7,8,9,10}; Arrprint(i_arr); Arrprint2(i_arr); return 0; } void Arrprint(int *Arr){ for(int i = 0; i

    [C++] atoi (char > int 형변환) / stoi (string > int 형변환) 함수 구현

    음수 표기하고자 하면 첫번째 원소가 - 와야됨. int Atoi(char* str) { int sign = 1, data = 0; char cur = *str; if (cur == '\n') return 0; if (cur == '-') sign = -1; while (cur != '\0') { cur = *str++; if (cur >= '0' && cur = '0' && cur

    [C++] char형 데이터 int형으로 변환하기

    char ch1 = '1'; int num1 = ch1 - '0'; cout

    [C++] 범위 (Scope)

    블록 범위 (Block Scope) 객체의 잠재적인 범위는 블록내 선언 된 지점에서 시작하여 블록의 끝에서 끝난다. 중첩된 블럭내 상위 블럭에서 선언 된 것과 동일한 이름으로 선언하는 경우 상위에서 선언 된 것은 무시되고 블럭내 선언 된 것이 사용된다. 이런 방법은 지양해야 하며 다른 이름을 사용한다. int main() { int a = 0; // scope of the first 'a' begins ++a; // the name 'a' is in scope and refers to the first 'a' { int a = 1; // scope of the second 'a' begins // scope of the first 'a' is interrupted a = 42; // 'a' is in s..

    [C++] string 타입 문자열을 Split (분할)하기

    Java에서는 문자열을 특정 구분자를 이용하여 여러 부분으로 나누는 함수 split을 제공한다. 또한 C의 경우 strtok라는 함수를 이용하여 char배열 형태의 문자열을 구분자를 기준으로 나눌 수 있다. 그러나 strtok의 경우 string타입의 문자열은 지원하지 않는다. C++에서는 istringstream이라는 문자열에서 작동하는 스트림 클래스가 있다. 이는 sstream이라는 C++ 표준 라이브러리를 추가해주어야 사용가능하다. istringstream는 istream을 상속받기 때문에 getline함수를 사용할 수 있다. getline 함수 : istream& getline(istream& is, string& str, char delim); getline함수를 이용하여 구분자별로 잘라서 ve..

    [C++] 배열을 함수의 매개변수로 사용 시 주의점

    Main함수로부터 scores[5] 배열을 넘겨받아 배열의 원소를 출력하는 PrintScore 함수를 살펴보자. void PrintScore(int scores[5], int size) { cout

    C++ 빌드 진행 과정

    C++에서 작성한 소스코드를 실행 가능한 실행 파일로 변환하기 위해서는, 일련의 4단계를 따른다. 먼저 #include / #define 같은 전처리기 매크로들을 처리하는 전처리( Preprocessing ) 단계 각각의 소스 파일을 어셈블리 명령어로 변환하는 컴파일( Compile ) 단계 어셈블리 코드들을 실제 기계어로 이루어진 목적 코드( Object File ) 로 변환하는 어셈블( Assemble ) 단계 마지막으로 각각의 목적 코드들을 한데 모아서 하나의 실행 파일로 만들어주는 링킹( Linking )단계로 나누어 진다. 대부분 전처리 단계 - 컴파일 단계 - 어셈블 단계를 모두 합쳐 컴파일 단계 하나로 생각해도 무방하다. 즉, 많은 경우 어셈블 명령어 같은 파일을 생성하지 않고 바로 목적 코..

    [C++] 두 배열을 비교할 수 있는 함수 equal

    1. equal C++의 알고리즘 관련 여러 함수들이 담긴 헤더 에서의 equal 함수는 다음과 같은 두 가지 구조를 가진다. 1] equality - bool equal (InputIterator first1, InputIterator last1, InputIterator first2) 2] predicate - bool equal (InputIterator1 first1, InputIterator last1, InputIterator first2, BinaryPredicate pred) equal은 쓰임에 따라 3개 혹은 4개의 인자를 받는다. InputIterator first1 : 비교할 첫 번째 배열이나 어떤 container 자료형의 시작부 혹은 포인터 InputIterator last1: 비..