Qt 날짜 관련 함수 QDate, QDateTime 가 존재한다. QDate: 연월일 QDateTime: 연월일, 시분초현재날짜 구하기 currentDate() 라는 함수가 있다. 예제) QDate stCurrentDate = QDate::currentDate();UTC 관련 서울은 UTC 기준으로 +9 이다. QDateTime::currentDateTimeUtc() 라는 함수가 존재한다. 예제) #define UTC_TIME_ASIA_SEOUL (9 * 60 * 60) // 9h QDateTime stCurrentDateTime; stCurrentDateTime = QDateTime::currentDateTimeUtc(); stCurrentDateTime = stCurrentDateTime.addSec..
함수의 초기화 과정에서 종종 goto문을 사용하곤 한다. 예를 들면 열 가지 정도의 변수에 메모리를 할당 해 주는데, 다섯번째쯤 되는 변수를 처리하는 과정에서 오류가 발생했다고 가정해보자. 그럼 앞에 메모리가 할당된 네 개의 변수는 어떻게 될까? 할당해놓고 해제해 준 적이 없으니 메모리 누수상태가 된다. (Memory Leak) 그래서 변수 처리중에 에러가 발생 하면, 바로 return을 해버리는게 아니라 goto문을 이용하여 error 처리부로 이동시켜 메모리 해제해주는 작업을 거치게 된다. 윈도우에서 제공하는 try-finally 와 유사하다고 보면된다. goto문을 사용하는 간단한 예제는 다음과 같다. int Initialize() { // 이 예제에서는 CDialog라는 클래스가 있다고 가정한다...
[Qt] QString의 문자열 처리 다음 환경을 사용하였습니다. 환경이 다를 경우, 일부 API가 동작하지 않을 수 있습니다. [OS: Ubuntu 14.04.1 LTS] [Qt Version: 5.4] Qt에서는 문자열처리에 관련하여 다양한 API들을 제공하고 있다. 기본적으로 QString은 std::string 과 유사하다. 이 QString을 기본으로 하는 여러 API들이 있다. 레퍼런스를 이용하여 문자열간 복사가 일어나지 않게 하는 QStringRef 스트림처리 방식의 QTextStream 가 있다. QString의 특징 중 하나는 유니코드 인코딩을 지원한다는 점이다. UTF-8과 UTF-16의 방식을 지정하여 사용 가능하다. [QString 메뉴얼](http://doc.qt.io/qt-5/q..
* 다음 환경을 사용하였습니다. 환경이 다를 경우, 일부 API가 동작하지 않을 수 있습니다. [OS: Ubuntu 14.04.1 LTS] [Qt Version: 5.4] QFontMetrics 클래스를 이용하면 된다. 단, 딱 정확한 크기를 구하기 때문에, margin값을 따로 주어야 한다. int QFontMetix::width(QChar ch) const; int QFontMetix::width(const QString &text, int len, int flags) const; int QFontMetix::width(const QString &text, int len = -1) const; 함수 이름: width함수 역할: 입력받은 글자의 Pixel 사이즈를 구한다.함수 설명: 각 글자의 logi..
atoi(), itoa() 함수에 대하여.. 블로그 유입로그를 보다보니 위의 함수에 관련된 유입이 많아서 위 함수에 관련된 포스팅을 합니다. 이 함수들은 stdlib.h 파일에 선언되어 있습니다. 다만, itoa 함수의 경우 비 표준함수입니다. C99/C11규격에서 정의되지 않고, MS 컴파일러에서만 이용가능한 함수입니다. 즉, Linux/macOS 등 비 마이크로소프트 운영체제(컴파일러)에서는 stdlib.h 헤더파일을 include 한다고 해도 itoa 함수를 사용하지 못합니다. 따라서 저는 itoa함수 대신에 다른 방법으로 문자열 전환을 권유해 드렸습니다. c/c++ sprintf, snprintf 함수 - 해당 포스팅을 보고 싶으시면 이곳을 클릭하세요 1. 문자열을 정수형으로 변환 이때 사용하는 ..
가변인자 함수가 있듯이, 매크로도 가변인자 매크로가 있습니다. 가변인자 매크로 역시 ... 의 매개변수를 받는데요. 매크로의 경우 가변인자 함수보다 훨씬 사용하기 간편하게 되어있어 자주 사용하는 편입니다. #define VA_PRINT(fmt, ...) printf(fmt, __VA_ARGS__) 위와 같이 사용할 수 있습니다. 가변인자 함수 때처럼 va_startf나 vnprintf 따위의 매크로를 이용할 필요가 없습니다. __VA_ARGS__ 를 넣어주면 알아서 포맷으로 변환하여 출력해 줍니다. C코드 예제를 하나 만들어보았습니다. #include #define VA_PRINT(fmt, ...) fprintf(stdout, "결과: " fmt "\n", __VA_ARGS__) int main() { ..
1. # 연산자 매크로에서 # 연산자는 문자열로 변환(치환) 시켜주는 연산자 입니다. 아주 단순한 예를 들어보았습니다. 아래의 예제를 한번 살펴보도록 하겠습니다. #include #define PRINT(s) printf(#s) int main() { PRINT(THIS IS TEST CODE); return 0; } 만일 PRINT 매크로에서 s앞에 붙은 #이 빠지게 되면 오류가 발생하게 됩니다. 왜냐하면 매크로변수 s는 THIS IS TEST CODE를 받게 되는데, c 문법에 따라 따옴표가 없기 때문에 이것들을 하나의 '변수'로 인식하게 됩니다. #을 빼주고 "THIS IS TEST CODE" 라고 앞뒤로 따옴표를 붙여주면 잘 실행이 됩니다. 즉, #은 받아온 매크로변수를 문자열로 바꿔주는, 더 쉽..
bsearch 라는 함수는 특정 배열안의 값을 찾고자 할 때, 이진 탐색의 방법으로 빠르게 찾아주는 함수입니다. 단, 이진탐색이라는 특징 상 배열은 반드시 정렬(sorting)되어 있어야 합니다. * 이진탐색이란? - 가운데에서부터 탐색을 시작하며 오름차순으로 정렬되어 있는 배열의 경우, 찾는 값이 비교대상의 값보다 작으면 왼쪽에, 비교대상의 값보다 크면 오른쪽에 위치하게 됩니다. 배열을 계속 반씩 잘라가며 탐색을 하며, 따라서 배열의 개수 n에 대하여 O(log n)의 속도로 탐색이 가능합니다. 배열의 개수가 많아질수록 더욱 효과적이게 됩니다. 아래는 이진탐색의 예제입니다. 1부터 100사이의 임의의 숫자 10개가 배열안에 정렬되어 있습니다. 86을 찾고자 할때, 이진 탐색의 경우 아래와 같이 이루어집..
C언어 가변 인자(가변 파라미터)를 사용해보자 1. 가변인자란 무엇일까? printf 함수를 써보셨나요? 우리는 자연스럽게 printf("%d * %d = %d", 3, 5, 3*5)라고 쓰고 있습니다. 가만보면 printf라는 함수는 인자를 1개만 넣어도 되고, 2개만 넣어도 되고, 3개, 4개 그 이상을 넣어도 문제없이 돌아갑니다. c언어에서 이런것이 가능한가요? 오늘은 이런 마법을 부릴 수 있게 하는 가변 인자라는 것에 대해 포스팅을 하겠습니다. 2. printf의 원형 printf 함수의 원형을 찾아보신 분이 계실지 모르겠습니다. printf의 원형을 찾아보면 다음과 같습니다. int printf(const char* format, ...) 참조: 컴파일러에 따라 printf의 실제 구현과는 원형..
c/c++ sprintf, snprintf 함수 sprintf라는 출력함수가 있습니다. 이 함수는 printf와 비슷하게 사용되지만, 다른점은 printf는 모니터 화면에 입력한 문자열이 출력된다면, sprintf는 버퍼로 사용될 변수로 출력이 됩니다. 즉, char * 로 선언된 변수안에 입력된 내용이 문자열로써 담기게 되는 것이죠. snprintf는 2번째 파라미터로 size가 추가된 함수로, 버퍼 오버플로우를 막기위해 문자열의 길이를 지정하는 좀 더 안전한 함수가 되겠습니다.우선 함수의 프로토타입을 먼저 보도록 하겠습니다. int sprintf (char *buffer, const char *format, ...) int snprintf (char *buffer, int buf_size, const..
- Total
- Today
- Yesterday
- Swift
- 리눅스 터미널 색상
- itoa
- 우분투 16.04
- git 설정
- 안시 컬러
- 챗봇
- Rx.js
- ZONES
- qemu linux arm
- zone
- angular2
- Zone.js
- ECMA2015
- 스위프트
- Angular
- 안시 색상
- 폰트 조정
- typeScript
- git proxy
- JavaScript
- vim
- C언어
- NgZone
- QT
- lua table
- 타입스크립트
- terminal 색
- ansi color
- observable
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |