전체보기
- [HorribleSubs] 릴 배포 사이트 2019.12.15
- [C++] LNK2019 _GetAdaptersInfo@8 Error 관련 2019.12.12
- Customs Clearance Information(개인고유통관번호) 2019.11.11
- [C++] 유니코드환경에서 달라지는 주요 함수 2019.11.05
- [Visual Studio] 정규식으로 찾기 및 바꾸기 2019.11.04
- 유로 트럭 시뮬레이터 2 콘솔 치트 2019.11.03
[HorribleSubs] 릴 배포 사이트
[C++] LNK2019 _GetAdaptersInfo@8 Error 관련
시스템 맥주소를 가져와야할 필요가 있어서 관련 코드를 작성하고 컴파일 했는데
LNK2019 오류가 뜨면서 _GetAdaptersInfo@8 에러메시지가 나타난다.
이 경우에는 헤더파일만 추가해서 그렇다.
아래처럼 Lib파일도 추가해주면 된다.
#include <Iphlpapi.h>
#pragma comment (lib, "Iphlpapi.lib")
'Programming' 카테고리의 다른 글
[C++/MFC] SendMessage 와 PostMessage 차이점 (0) | 2020.07.14 |
---|---|
영문 윈도우에서 VisualStudio 한글이 깨질때 해결방법 (0) | 2019.12.17 |
[C++] 유니코드환경에서 달라지는 주요 함수 (0) | 2019.11.05 |
[Visual Studio] 정규식으로 찾기 및 바꾸기 (0) | 2019.11.04 |
[C++/MFC] 쓰레드에서 UI에 접근하는 가장 안전한 방법 (0) | 2019.08.20 |
Customs Clearance Information(개인고유통관번호)
Customs Clearance Information은 개인고유통관번호를 뜻하며 P로 시작하는 번호이며
아래 링크를 통해 관세청 사이트에서 간단한 본인인증을 통해 무료로 발급받을수 있다.
개인고유통관번호 발급 : https://unipass.customs.go.kr/csp/persIndex.do
'Action' 카테고리의 다른 글
전화권유판매 수신거부의사 등록시스템 (0) | 2019.06.06 |
---|---|
수영 영법별 자세 아레나 움짤 (0) | 2019.04.11 |
해외 배송정보 번역 (0) | 2017.01.04 |
사업자 등록 신청요령 (0) | 2013.01.06 |
1인 창조기업 해당 업종 (1) | 2013.01.02 |
[C++] 유니코드환경에서 달라지는 주요 함수
윈도우 환경의 C++ 프로그래밍을 하다 보면 멀티바이트, 유니코드라는 문자집합 때문에 고민하게 된다.
프로젝트를 생성하게 되면 기본적으로 유니코드 환경으로 설정되어 있으나, 과거 하위버전의 Visual Studio에서 작성한 프로젝트이거나, 기타사유로 멀티바이트로 변경한 프로젝트를 다시 유니코드 환경으로 설정하면 당연히 컴파일 오류가 발생한다.
구분 | 유니코드(_UNICODE) | 멀티바이트(_MBCS) |
기본 자료형 | wchar_t | char |
단일 문자의 크기 | 2Byte (16bit) | 1Byte ~ 2Byte (영문, 숫자를 포함한 ASCII는 1바이트로 표현되고 나머지 한글, 한자, 일본 가나 등은 2바이트로 표현) |
포함하는 문자셋 | 와이드 문자 및 u t f-16으로 인코딩된 문자열 | 유니코드를 제외한 문자셋 (ANSI, UTF-8 등) |
기존 멀티바이트 환경에서는 문자열을 입력할 때 큰따옴표(" ") 안에 정의했지만, 유니코드 환경에서는 큰따옴표 앞에 대문자 L을 넣어줘야한다.
TCHAR에서 제공하는 통합형 매크로는 TEXT나 _T를 큰따옴표 앞에 넣어주면 된다.
예시
멀티바이트 환경에서 문자열 정의:
char chTest[50] = "ABCDEFG";
유니크도 환경에서 문자열 정의:
wchar_t wchTest[50] = L"ABCDEFG";
TCHAR 통합형 매크로:
TCHAR tchTest[50] = TEXT("ABCDEFG"); //또는 _T("ABCDEFG");
#ifdef _UNICODE typedef WCHAR TCHAR; #else typedef char TCHAR; #endif
위 코드에서 보면 _UNICODE가 정의되었냐에 따라 새로 정의된 자료형 이름이 둘다 TCHAR인것을 확인 할 수 있는데,
이것은 유니코드, 멀티바이트 모두 TCHAR를 사용할 수 있으며, 각 정의에 따라 자동으로 WCHAR와 char로 매크로가 된다는 의미이다.
따라서 TCHAR 매크로를 쓰게되면 유니크도, 멀티바이트 환경을 개발자가 고민할 필요가 없다는 것이다.
프로젝트 설정에 따라 내부적으로 매크로가 되니깐.
뿐만아니라 문자열 함수(strcpy 등)도 정의에 따라 나눠지게 된다. (자세한 내용은 tchar.h 파일에서 확인하면 된다. 너무 많아서 ㅠㅠ)
대표적인 함수 몇개를 정리해보았다.
- 기본적인 문자열 관련 함수
함수 설명 |
_MBCS(멀티바이트) |
_UNICODE(유니코드) 정의됨 |
TCHAR 통합형(권장) |
문자열 복사 |
strcpy_s |
wcscpy_s |
_tcscpy_s |
문자열 복사 (길이 지정) | strncpy_s | _mbsnbcpy_s | _tcsncpy_s |
문자열 서식 |
sprintf_s sprintf |
swprintf_s swprintf |
_stprintf_s _stprintf |
문자열 비교 |
strcmp |
wcscmp |
_tcscmp |
문자열 길이 |
strlen |
wcslen |
_tcslen |
문자열 추가 |
strcat_s strcat |
wcscat_s wcscat |
_tcscat_s _tcscat |
문자 검색 |
strchr |
wcschr |
_tcschr |
문자열 검색 |
strstr |
wcsstr |
_tcsstr |
문자열 스트림 입력 |
scanf_s |
wscanf_s |
_tscanf_s |
- 문자열을 정수 또는 실수형으로 변환
함수 설명 |
_MBCS(멀티바이트) (_UNICODE 정의안됨) |
_UNICODE(유니코드) 정의됨 |
TCHAR 통합형(권장) |
문자열 정수(int) 변환 |
atoi |
_wtoi |
_ttoi |
문자열 정수(long) 변환 | atol | _wtol | _ttol |
문자열 정수(long long) 변환 | atoll | _wtoll | _ttoll |
문자열 실수(double) 변환 | atof | _wtof | _ttof |
- 파일입출력 관련
함수 설명 | _MBCS(멀티바이트) (_UNICODE 정의안됨) | _UNICODE(유니코드) 정의됨 | TCHAR 통합형(권장) |
파일 열기 | fopen_s | _wfopen_s | _tfopen_s |
파일 쓰기(스트림 출력) | fprintf_s | fwprintf_s | _ftprintf_s |
스트림에서 문자열 읽기 | fgets | fgetws | _fgetts |
|
|
|
'Programming' 카테고리의 다른 글
영문 윈도우에서 VisualStudio 한글이 깨질때 해결방법 (0) | 2019.12.17 |
---|---|
[C++] LNK2019 _GetAdaptersInfo@8 Error 관련 (0) | 2019.12.12 |
[Visual Studio] 정규식으로 찾기 및 바꾸기 (0) | 2019.11.04 |
[C++/MFC] 쓰레드에서 UI에 접근하는 가장 안전한 방법 (0) | 2019.08.20 |
[VS2015] Visual Studio 2015 Setup Project Unrecoverable build error 발생시 (0) | 2019.06.24 |
[Visual Studio] 정규식으로 찾기 및 바꾸기
프로그래밍을 하다 보면 코드의 일부 내용을 반복적으로 바꿔줘야할 때가 있다.
오래된 프로젝트를 리팩토링한다거나 프로젝트 문자셋을 멀티바이트에서 유니코드로 바꿀 때가 그 대표적인 예다.
물론 일일이 컴파일 오류나는 부분을 찾아서 바꿔주거나 전체 찾기해서 바꿔주는 원초적인 방법이 있다.
보다 효율적이고 능률적인 방법을 소개하겠다.
바로 정규표현식(aka. 정규식)을 사용한 찾기 및 바꾸기이다.
C++에서는 정규식이 조금 낯설수 있는데, 간략하게 설명하자면 정규표현식이란, 문자열에서 일정한 규칙(Pattern)을 갖는 문자열 집합(Group)을 찾아내는 것이다.
필자는 멀티바이트로 작성된 프로젝트를 유니코드로 바꾸는 과정에서 수많은 문자열 메시지 부분을 유니코드에 맞게 바꾸줘야하는 작업을 위 정규식을 이용해 작업했다.
찾기 바꾸기 대화상자(단축키:Ctrl+Shift+F)에서 찾기옵션에 정규식 사용에 체크를 해야한다.
MFC의 대표적인 문자열 타입인 Cstring의 경우 멀티바이트 인 경우 큰따옴표("")로 문자열을 표시했지만,
유니코드로 바꾸려면 _T 매크로를 넣어주거나 L를 앞에 넣어줘야한다.
물론 _T 매크로가 삽입되어 있다면, 매크로에서 자동으로 L로 변환이 된다.
(멀티바이트든, 유니코드는 _T 매크로를 넣어주는 버릇을 갖다.)
_T매크로는 _T(로 시작해서 괄호) 로 끝나기 때문에 그냥 찾아 바꾸기만 해서는 안된다.
다음은 내가 가장 많이 쓰는 정규식이다.
1. Cstring의 Format 멤버함수
예시:
찾을 대상
strTitle.Format("%s: ABCDEFG123456가나다라", this->getTitle());
바꿀 문자열
strTitle.Format(_T("%s: ABCDEFG123456가나다라"), this->getTitle());
Format 멤버함수의 문자열을 감쏴고 있는 큰따옴표 앞에 _T 매크로를 넣어줘야한다.
정규표현식:
찾을 문자열:
.Format\(\"(.*)\"
바꿀 문자열
.Format(_T("$1")
위에서 보다시피 정규식을 찾을때에는 문자열에 포함되는 괄호, 따옴표에 대해서는 백슬래시(\)로 구분을 해줘야한다.
그리고 바꿀 문자열에 대해서는 백슬래시가 필요없으며 그룹 문자열($1,$2,$3...) 등을 사용하면 된다.
2. Afxmessage 메시지 팝업
예시:
찾을 대상
AfxMessageBox("입력값 초과");
바꿀 문자열
AfxMessageBox(_T("입력값 초과"));
정규표현식:
찾을 문자열:
AfxMessageBox\(\"(.*)\"
바꿀 문자열
AfxMessageBox(_T("$1")
'Programming' 카테고리의 다른 글
[C++] LNK2019 _GetAdaptersInfo@8 Error 관련 (0) | 2019.12.12 |
---|---|
[C++] 유니코드환경에서 달라지는 주요 함수 (0) | 2019.11.05 |
[C++/MFC] 쓰레드에서 UI에 접근하는 가장 안전한 방법 (0) | 2019.08.20 |
[VS2015] Visual Studio 2015 Setup Project Unrecoverable build error 발생시 (0) | 2019.06.24 |
[C++] XML Parser <CMarkup> (0) | 2019.06.19 |
유로 트럭 시뮬레이터 2 콘솔 치트
유로 트럭 시뮬레이터 2 콘솔모드를 지원하는데 시간조정, 날씨, 순간이동 등을 할 수 있다.
콘솔모드 활성화
먼저 콘솔모드를 사용하기 위해서는 아래처럼 파일을 열어 2줄을 수정해야한다.
- 문서 - Euro Truck Simulator 2 폴더 진입 (또는 시작 - 실행 - %USERPROFILE%/Documents/Euro Truck Simulator 2)
- config.cfg 파일을 메모장 등의 에디터로 불러온다.
- 아래를 찾아 각각 0을 1로 바꿔주고 저장한다.
uset g_console "0"
uset g_developer "0"
위 내용을 아래처럼 변경.
uset g_console "1"
uset g_developer "1"
사용법
게임 도중 키보드의 ESC 밑의 콘솔키( ` , 물결표~와 같은 키)를 누르면 명령을 입력할 수 있는 팝업창이 뜨는데 그곳에 아래 명령들을 입력하면 된다.
치트 종류 |
치트 명령 |
예시 |
설명 |
게임 시간 |
g_set_time 시간 분 |
g_set_time 15 30 |
15시 30분으로 시간이 지난다. 24시간형으로 입력해야하며, 과거로는 이동이 불가능하다. |
자유 시점 |
키보드 숫자 0 누름 |
콘솔창 말고 게임 도중 0 입력 |
게임 도중 0을 누르면 카메라 시점이 바뀌는데 이때 키보드 오른쪽 키패드의 4,5,6,8를 통해 화면 이동이 가능하며 F9를 누르면 현재 위치로 트럭이 떨어진다. |
순간 이동 |
goto 도시명 또는 좌표 |
goto berlin goto -44831.8;112.729;-40232.4 |
입력한 도시 또는 좌표로 이동한다. 이동하게 되면 공중에 떠있는데 이때 위의 자유시점을 이용하여 트럭 위치를 설정할 수 있다. |
교통량 조정 |
g_traffic 0 ~ 10 |
g_traffic 0 |
1이 기본 교통량이며, 0은 교통량이 없으며 10으로 가까워질수록 늘어난다. |
경찰 단속 |
g_police 1 또는 0 |
g_police 1 |
1이면 교통단속을 하고 0이면 교통단속이 없다. |
날씨 |
g_set_weather 1 또는 0 |
g_set_weather 1 |
1이면 비가 내리고 0이면 맑아진다. |
'Gamming' 카테고리의 다른 글
포르자 호라이즌5(Forza Horizon 5) 지원 레이싱휠 (0) | 2021.11.14 |
---|---|
[FS19] Farming Simulator 19(파밍시뮬레이터19) 모든 나무 제거 (2) | 2020.05.03 |
[FS19] Farming Simulator 19(파밍시뮬레이터19) 게임내 표시 아이콘 의미 (0) | 2020.04.30 |
The Division 2 디비전2 에러코드(MIKE, DELTA..) (0) | 2020.02.21 |
Tropico6 v1.07 & v1.06 cheat table (0) | 2020.01.19 |