티스토리 뷰

개발/VC++ (MFC)

MFC : 개발 소소한 팁 정리

부캐: 개발하는 조대리 2023. 4. 28. 15:08
반응형

1. MFC에서 문자열 작성 후 파일에 저장 시 한글 깨져있을 때 체크 사항

- setlocale(LC_ALL, "Korean"), setlocale(LC_ALL, ""): 시스템 설정에 따름

- 프로그램 시작 시등 필요한 곳에 한 번 실행

 

2. MFC 현재 시간 구하기

- CTime time = CTime::GetCurrentTime(); -> time.Format(_T("%Y_%m_%d_%H.log"))); ( OK )

- CTime time = GetCurrentTime(); -> time.Format(_T("%Y_%m_%d_%H.log"))); ( Failed )

 

3. boost asio read_some() 함수 호출 시 0으로 바로 리턴될 때 체크 사항

 buffer를 vector로 사용할 경우 아래와 같이 resize 함수를 사용하여 사이즈를 정해줘야 함.

(vector 사이즈가 0일 경우 바로 리턴됨)

boost::system::error_code error;
std::vector<BYTE> recvBuffer{};
recvBuffer.resize(1024);
size_t len = _socket.read_some(boost::asio::buffer(recvBuffer), error);

 

4. Convert byte array to string in C++

vector<unsigned char> bytes = {'G', 'O', 'O', 'D'};

-> std::string msg(bytes.begin(), bytes.end());

 

5. Convert a String to a Vector of Bytes in C++

std::string msg = "Hello";
std::vector<unsigned char> bytes;
for (char ch : msg)  {
    bytes.push_back(static_cast<unsigned char>(ch));
}

std::string msg = "Hello";
std::vector<unsigned char> bytes(msg.begin(), msg.end());
std::string msg = "Hello";
std::vector<unsigned char> bytes;

bytes.resize(msg.size());

std::copy(msg.begin(), msg.end(), bytes.begin());

 

6. Convert string to wstring, Convert wstring to string

std::string msg = "hello";

std::wstring wmsg;

wmsg.assign(msg.begin(), msg.end());

std::wstring wmsg = "hello";

std::string msg;

msg.assign(wmsg.begin(), wmsg.end());

 

7. std::snprintf 사용 시 체크 사항

- snprintf : 길이 n의 마지막에는 '\0' 값이 들어간다는 것을 염두에 두고 길이 값 설정 필요 함.

int length = 16;
char bufferTotLength[4] = { 0, };
// "0001"로 마지막 문자6이 잘림
std::snprintf(bufferTotLength, sizeof(bufferTotLength), "%04d", length);