본문 바로가기

Language, IDE/C, C++

(25)
[C/C++] C언어 이스케이프 문자(Escape Character, 이스케이프 시퀀스) C언어 이스케이프 문자(Escape Character) C/C++의 이스케이프 문자(Escape Character) 또는 이스케이프 시퀀스라 부른다. 백슬래시(\)와 특정문자(알파벳,',? 등)를 결합하여 언어특성상 표현할 수 없는 기능, 문자를 표시해준다.백슬래시는 \이지만 키보드에는 백슬래시가 없고 ₩로 대체한다. \와 ₩는 같은 의미이니 참고 바람 문자 의미 설명 \a 경보(alert) 경보를 울림(하드웨어에 따라 상이) \b 백스페이스(backspace) 백스페이스 \f 폼피드(form feed) 커서를 다음 페이지의 시작부분으로 넘김 \n 개행, 뉴라인(new line) 커서를 다음줄 첫번째 위치로 넘김 \r 복귀, 캐리지 리턴(carriage return) 커서를 다음줄로 넘기지 않고 첫번째 ..
[C++/C] 포인터 오늘 포스팅할 내용은 C/C++의 포인터 입니다. 포인터는 C/C++에서 배열이나 매개변수 부분에서 사용되고 효율적으로 인자를 넘기기위해서 주로 사용됩니다.컴퓨터공학에(C언어) 처음 입문하시는 분들이 초반에 많이 어려워하고 힘들어하는 부분이기도 합니다. 우선 포인터의 개념에 대해 설명하는 포스팅을 한 후 다음 포스팅에서 포인터 사용예를 포스팅하도록 하겠습니다. 포인터에는 메모리할당을 통한 동적포인터도 존재하지만 예전에 비해 효율성이 떨어지고(예전에는 메모리가 작았기 때문에 메모리 할당 해제를 통해 작은 메모리를 효율적으로 사용하는 경우도 있었다고 한다.) 오히려 잘못쓰면 메모리 낭비가 발생할 수 있기때문에일반적인 포인터인 정적포인터를 기준으로 설명하겠습니다.(일반적으로 그냥 포인터라 함은 정적포인터를 말..
[C++] StringTokenizer JAVA에서는 String을 Token별로 끊어주는 StringTokenizer클래스가 제공되지만 C++에서는 그러한 클래스가 제공되지 않는다. 그래서 StringTokenizer를 사용하려면 직접 구현하여 사용하여야 한다. 아래의 두 파일을 받아 프로젝트폴더에 넣고 #include "StringTokenizer.h"를 하여 자바에서 StringTokenizer를 사용하듯이 사용하면 됩니다. 사용가능 함수 및 생성자StringTokenizer(string str) StringTokenizer(string str,string delim) StringTokenizer(string str, string delim, bool returnDelims) hasMoreTokens() countTokens() next..
[C++] Thread(쓰레드, 스레드) 쓰레드(thread)는 라이브러리에 정의되어있다. 쓰레드(thread)란 프로세스내에서 실행되는 실행 단위이다. 주로 프로그램에는 하나의 스레드로 구성되는데 프로그램은 여러개의 스레드를 가질 수 있다. 이러한 방식을 멀티스레드 라고 한다. 멀티스레드를 실행하면 각 스레드들은 일정시간동안 번갈아가면서 실행된다. 예를들어 1을 1000번 출력하는 스레드 T1과 0을 1000번 출력하는 스레드 T2가 있다고할 때 1이 1000번 출력되고 0이 1000번 수행되는 것이 아니라 1과 0이 번갈아가면서 실행된다(정확히 101010...이 출력되지는 않고 실행할때 마다 조금식 다르게 출력된다.) C++에서 스레드는 아래와 같이 사용한다.thread(함수);#include #include using namesapce ..
[C++] string to int, int to string string to int - string에서 int로 변환atoi()함수 사용. -> atoi(char*)인자가 char*형이기 때문에 c_str()함수로 변환해주어야함.string str = "34"; int intValue = atoi(str.c_str()); int to string - int에서 string으로 변환to_string()함수 사용. -> to_string(int)int intValue = 5; string str = to_string(intValue);
[C++ STL] 벡터(vector) C++에서 배열의 인자는 상수이기 때문에 길이를 변경할 수 없다. 프로그래밍을 하다보면 동적인 길이의 배열을 생성해야하는 경우가 있다. C++에서 동적 배열을 생성할 수 있지만 배열의 크기를 늘리는 과정은 코드가 비효율적이되고 복잡하다. 벡터(Vector)는 런타임에 그 크기가 변경될 수 있는 배열과 같은 자료구조다. 벡터는 배열과 거의 유사하게 사용할 수 있다. 벡터는 인덱스구조를 사용하기 때문에 임의 접근이 가능하고 탐색이 빠르다. 하지만 인덱스구조를 항상 유지하기 위해서 임의의 위치에 있는 원소를 삽입 및 삭제하기 위해서는 많은 시간이 소요된다. 벡터는 라이브러리에 정의되어있고 네임스페이스 std에 정의되어있다. #include using namespace std; 벡터의 생성 벡터는 일반 템플릿 ..
[C++] 예외 처리 (Exception) C++에서는 예외 처리(Exception)를 제공한다. 예외처리는 일반적이지 않은 상황이 발생하였을때 예외처리 신호를 보내어 현재 실행중이던 코드를 정지하고 지정해준 코드를 실행한다. 예를들어 0으로 나누는 경우 등이 있을 수 있다. 이외에도 다른 복잡한 예외 상황이 있을 수 있다. 예외 처리는 간단하다. try문에 실행코드를 넣고 예외상황에 throw문을 던지면 try문이 종료되면서 catch가 수행된다. try{ //실행코드 throw type; //실행코드 }catch(type 변수명) { //catch시 실행될 코드 } 예를들어 0으로 나누는 경우 예외처리를 보자. int main() { try { int num; cin>>num; if(num == 0) throw num; } catch(int ..
[C++] 템플릿(template) C++에서는 템플릿(template)을 제공한다. 템플릿(template)은 형판, 견본, 본보기라는 뜻으로 C++에서도 함수나 클래스를 정의할 때 타입에 대한 틀을 제공해준다. 함수나 클래스에서 각 타입에 대한 정의를 일일이 작성하지 않고 템플릿을 사용함으로써 코드에 효율성을 준다. 변수 타입만 다른 함수에 대해 템플릿을 사용하면 타입을 미리 지정해주지 않아도 사용시에 컴파일러가 그 타입에 대한 정의를 오버로딩 해준다. 템플릿을 사용하지 않으면 코드가 매우 비효율적이 된다. 예를들어 다음을 생각해보자. void swapValues(int& value1, int& value2) { int temp; temp = value1; value1 = value2; value2 = temp; } 위와같은 int형 ..