Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //
- // CMyString.cpp
- // cppToBitcore
- //
- // Created by 곽대용 on 2018. 8. 11..
- // Copyright © 2018년 dany. All rights reserved.
- //
- #include "CMyString.hpp"
- #include "string.h"
- CMyString::CMyString():m_pszData(NULL), m_nLength(0){}
- CMyString::CMyString(const CMyString &rhs){
- m_nLength = rhs.m_nLength;
- m_pszData = new char[rhs.m_nLength +1];
- strcpy(m_pszData, rhs.m_pszData);
- //this -> setString(rhs.getString());
- }
- CMyString::~CMyString(){
- Release();
- }
- CMyString& CMyString::operator = (const CMyString &rhs){
- if(this != &rhs){
- this->setString(rhs.getString());
- }
- return *this;
- }
- int CMyString::setString(const char* pszParam){
- //연속된 문자열 set 방지
- Release();
- if(pszParam == NULL){
- return 0;
- }
- //visual studio에서 사용하는 함수와 xcode에서 사용하는 함수가 다르다.(라이브러리)
- //visual studio에서는 stdafx.h 라이브러리에서 함수를 쓰지만 xcode에서는 string.h가 제공되는데, 함수가 조금씩 다르다.
- //strlen 함수의 경우, vs에서는 int를 리턴하지만 xcode에서는 size_t 라는 타입을 리턴해서, 캐스팅을 해줘야 한다..
- int nLength = static_cast<int>(strlen(pszParam));
- if(nLength == 0){
- return 0;
- }
- //문자열을 저장하기위한 크기의 메모리 할당(마지막에 null 올까봐 크기하나더 할당)
- m_pszData = new char[nLength + 1];
- //할당한 메모리에 문자열 저장
- //vs와 받는 인자값이 다르다. xcode에서는 문자열의 길이를 받지 않는다. 저장할 메모리와 문자열만 저장.
- strcpy(m_pszData, pszParam);
- //문자열 길이 저장
- m_nLength = nLength;
- //저장한 문자열 길이 리턴
- return nLength;
- }
- const char* CMyString::getString() const{
- return m_pszData;
- }
- void CMyString::Release(){
- //없는데 호출할 경우 예외처리
- if(m_pszData != NULL){
- //char 배열이기때문에 메모리 이렇게 비워야 한다.
- delete[] m_pszData;
- m_pszData = NULL;
- m_nLength = 0;
- }
- }
- ///////////////////////////////
- //
- // CMyString.hpp
- // cppToBitcore
- //
- // Created by 곽대용 on 2018. 8. 11..
- // Copyright © 2018년 dany. All rights reserved.
- //
- #ifndef CMyString_hpp
- #define CMyString_hpp
- #include <stdio.h>
- //hpp에는 클래스와 멤버들을 '선언'
- class CMyString{
- public:
- CMyString();
- ~CMyString();
- CMyString(const CMyString &rhs);
- private:
- //문자열을 저장하기 위해 동적 할당한 메모리 포인터
- char* m_pszData;
- //저장된 문자열 길이
- int m_nLength;
- public:
- int setString(const char* pszParam);
- const char* getString() const;
- void Release();
- CMyString& operator = (const CMyString &rhs);
- };
- #endif /* CMyString_hpp */
- //////////////////////////////////////
- //
- // main.cpp
- // cppToBitcore
- //
- // Created by 곽대용 on 2018. 7. 22..
- // Copyright © 2018년 dany. All rights reserved.
- //
- //c++ 에서 사용하는 객체를사용하는데 이 헤더가 필요하다.
- #include <iostream>
- #include "CMyString.hpp"
- using namespace std;
- int main(int argc, const char* argv[]) {
- CMyString strData, strTest;
- strData.setString("Hello");
- strTest.setString("World");
- //복사생성
- CMyString strNewData(strData);
- cout << strNewData.getString() << endl;
- //단순 대입 연산자 호출
- strNewData = strTest;
- cout << strNewData.getString() << endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment