전체 글 70

[C/C++] namespace 제대로 사용하기

외부 전역 변수를 사용하지 말고, 이름이 namespace에 있는 변수를 사용한다변수의 출처가 명확해진다 정적 전역 변수을 사용하지 말고, 이름이 무명 namespace에 있는 변수를 사용한다static int a; 보다는 namespace { int a; } 를 사용한다 함수 또는 클래스 라이브러리 개발하는 경우, 그들을 하나의 namespace에 넣는다실제로 C++ 표준 라이브러리 함수들은 std라는 namespace에 넣을 것을 요구한다 using 지시자 사용을 피한다 //using 지시자보다는 using namespace std; //using 선언이나 사용 범위 연결 연산자(::)를 사용한다 using std::wcout; using std::wcin; wcout

[C/C++] ios_base 클래스, setf, fmtflags 출력 형식 지정

출력 모양을 바꿔보자결과값을 출력할 때 프로그래머의 임의대로 출력하는 형식을 지정하고 싶을 때가 있다이럴 때 setf를 사용한다ios_base::setf(MSDN) :: https://msdn.microsoft.com/ko-kr/library/1kte43a2.aspxsetf는 ios_base 클래스의 일부로 출력 형식을 바꿔주는 명령어다setf(ios_base::fmtflags)의 형태로 사용하는데 괄호 안에 들어가는 fmtflgs가 출력 형식을 지정하는 상수값이다dec: 10진수 형식이 정수 값hex: 16진수 형식의 정수 값oct: 18진수 형식의 정수 값boolalpha: 숫자 값이 아닌 bool 형식의 개체fixed: 고정 소수점 형식의 부동 소수점 값showpoint: 생성된 부동 소수점 필드에..

[C/C++] atan2 함수로 각도 구하기 (극 좌표계)

직각 좌표계? 극 좌표계?평면 상에서 어떤 점의 위치 또는 원점에 대한 상대적 위치를 나타내야 한다고 할 때 우리는 좌표계를 이용한다그 좌표계를 표현하는 방법은 대표적으로 2가지가 있다첫번째로 원점으로부터의 수평 거리와 수직 거리를 이용하여 위치를 표현하는 직각 좌표계(rectangular coordinates)가 있다그리고 원점으로부터의 거리와 수평축으로부터의 각도를 이용하여 위치를 표현하는 극 좌표계(polar coordinates)가 있다 수평축으로부터의 각도 구하기직각 좌표계는 고등수학과정에서 많이 다루므로 극 좌표계를 프로그램으로 구현해보자어떤 한 점 A가 직각 좌표계에서 x, y로 표현된다고 가정한다원점으로부터의 거리는 피타고라스의 정리로 구할 수 있다그렇다면 수평축으로부터의 각도를 어떻게 구..

[C/C++] 포인터와 const

포인터에 const를 사용해?const라는 키워드는 포인터에 두 가지 방법으로 사용된다첫 번째 방법은 상수 객체를 지시하는 포인터를 만드는 것이다상수 객체를 지시하는 포인터를 사용하여 그 포인터가 지시하는 값을 변경할 수 없다두 번째 방법은 포인터 자신을 상수로 만드는 것이다상수 포인터를 사용하여 그 포인터가 지시하는 장소를 변경할 수 없다 상수 객체를 지시하는 포인터 int age = 39; const int *pt = &age; pt += 1; //pt는 const int를 지시하고 있으므로 사용할 수 없다 cin >> *pt; //사용할 수 없다 *pt = 20; //pt는 const int를 지시하고 있으므로 사용할 수 없다 age = 20; //age는 const로 선언되지 않았기 때문에 사용할..

[C/C++] string 문자열 비교 ==? compare? strcmp?

문자열 비교값을 비교할 때 보통 == 연산자를 이용하여 동일 여부를 알아낸다하지만 문자열의 경우 == 연산자를 사용하면 원치 않은 결과를 가져올 수도 있다이는 값은 같을지라도 값이 저장된 메모리 주소가 다르기 때문이다char 배열을 이용한 문자열의 경우 변수는 주소를 가리키므로 == 연산자를 사용하지 않고 strcmp() 함수를 사용한다하지만 C++에서는 string 문자열일 경우 == 연산자를 사용할 수 있다이 이유는 연산자 오버로딩에 있다 strcmp(), compare()char 배열 형식의 문자열을 비교할 때는 strcmp() 함수를 사용한다strcmp( string1, string2 )라고 가정하자위 값이 0보다 작을 경우 string1이 string2보다 사전적으로 앞에 있다값이 0일 경우 s..

[C/C++] error C2872, 모호한 기호입니다

error C2872 #include using namespace std; ... bool is_empty(LinkedListType *list) { return list->head == NULL ? true : false; } void delet(LinkedListType *list, int pos) { if ((!is_empty(list)) && (pos >= 0) && (pos length)) { ListNode *p = get_node_at(list, pos - 1); ListNode *removed = get_node_at(list, pos); remove_node((&list->head), p, removed); list->length--; } } ... 위와 같은 코드를 실행하..

[C/C++] error C4996: 'strcpy' 'strcat' 오류 해결

error C4996cstring을 지시한 후 strcpy(), strcat()을 사용할 때 다음과 같은 컴파일 오류가 생길 수 있다 error C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.error C4996: 'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNI..

728x90