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

 

 

 

+ Recent posts