CString 클래스 : MFC 에서 문자열을 편하게 사용할 수 있는 클래스
유니코드 사용 char→wchar_t 은 "aaa"→L"aaa"
중요한 건 내부는 복잡하더라도 이해하지 않아도 된다
잘 가져다 쓰는게 중요한 영역이 있다
#include <stdio.h> 는 C 입출력 함수
#include <iostream> 는 C++ 입출력 함수.
.h 로 끝나는 C 의 라이브러리를 C++ 에서 사용할 수 있도록 만들 때는 .h 를 지우고 앞에 c 를 붙인다
cstring ↔ string.h
cstring 이 불편해서 std:string 인 string 라이브러리를 사용
#include <iostream>
#include <string>
usng namespace std;
int main()
{
string myString1 = "hello string";
string myString2("hi string");
}
CString 을 이용하여 문자열 객체 만들기
CString myString = _T("My First String"); // 초기화로 문자열 객체 생성하기
개별 문자 접근
CString str = "abcde";
if (str[0] == 'a'){
// action
}
GetAt() : 문자 읽어오기
SetAt() : 지정 위치에 문자 넣기
// GetAt(), SetAt()
CString getString = myString.GetAt(3); // 3 위치 문자 가져오기
mhyString.Setat(1, 'K'); // 1 위치에 'K' 입력하기
문자 검색 : Find()
CString myString("hello my name");
// 찾는 문자가 있으면 위치 반환
// 찾는 문자가 없으면 -1 반환
myString.Find('m'); // 찾는 문자가 있어서 6 반환
myString.Find(_T("llo"));
myString.Find('e', 3); // 3 위치부터 시작해서 'e' 찾기
GetLength() : 문자열 길이 반환
C++ 에서 MFC에서 사용하는 CString 사용하는 방법
#include <atlstr.h>
vector 사용법
#include <vector> 하고
using namespace std; 해야 한다
아니면, std::vector 로 사용
원하는 문자 삭제
CString myString("my first string");
myString.Remove(L'f');
// 원하는 문자 삭제
myString.Delete(3,4);
// 문자열 비교
myString1.Compare(myString2); // 대소문자 포함
myStirng1.CompreNocase(myString2); // 대소문자 제외
// 좌, 중간, 우
CString leftString = myString.Left(3);
CString midString = myString.Mid(4,2);
CString rightString = myString.Right(2);
CString SPLIT
CString myString = _T("this is a life");
CString deli = _T("_");
CStringArray arr;
int cnt = myString.Split(deli, arr);
for (int i=0; i<cnt; i++)
{
cout << arr[i] << endl;
}
CStringArray class
- CStringArray::Add 는 element 추가
- CStringArray::GetSize 는 array 의 element 수를 반환. GetCount 랑 동일
CString 정적/동적 배열
// 정적 배열
CString myString;
CString myString1[] = {L"하나", L"둘", ㅣL"셋"};
int cnt = sizeof(mySting1) / sizeof(CString);
// 동적 배열
CStringArray myStringArr;
CString str;
myStringArr.Add("하나");
myStringArr.Add("둘");
myStringArr.Add("셋");
int cnt = myStringArr.GetSize();
str = myStringArr.GetAt(1); // 로 접근 가능
확장자명 제거
// 확장자 제거
int n = myString.ReverseFind(".csv");
CString newName = myString.Left(n); // 이렇게 하면 확장자 제거한 이름만 남음
// 파일명 변경
CString changeNmae = myString.Left(n) + _T("_new") + L".txt"; // 파일명 변경
// 숫자를 문자열로
myString.Format(_T("%d"), n);
// 문자열에 숫자 포함
myString.Format(_T("text%d"), n);
// 문자열을 숫자로
CString strDigit = "123"
int n = atoi(CStringA(strDigit));
// 또는
int n = _ttoi(strDigit);
ref. https://blog.naver.com/PostView.naver?blogId=tipsware&logNo=221332103563
ref. https://kwonkyo.tistory.com/94#gsc.tab=0
ref. https://grandstayner.tistory.com/entry/%E3%85%87
ref. https://kimji0139.tistory.com/24
ref. https://kimji0139.tistory.com/23