[C++] 문자열, 네임스페이스, 레퍼런스 타입

2023. 2. 13. 20:53·C++/C++

◆std::string

▷C++에서 문자열을 활용하기 위한 클래스형 문자열 타입

▷<string>헤더파일에 정의되어 있다.

▷정적인 형태의 클래스 인스턴스로 사용한다. (동적할당이 아니다)

▷=으로 정의가 가능하고, +로 이어붙이기가 가능하다. (연산자 오버로딩을 통해 사용한다)

 

◆std::cout

▷<iostream>에서 제공하는 출력 함수이다.

▷<<도 연산자 오버로딩이다.

std::string myStr = "Hello World\n";
std::cout << myStr;

 

◆c_str

▷std::string을 사용하였을 경우 printf를 통해 출력하려면(%s), const char* 형식으로 변환해야하는데 이때 쓰이는 것이 c_str()함수이다.]

▷std::string이 정적이기 떄문에 객체.c_str() 로 표현한다.

	std::string helloStr = "Hello World\n";
	helloStr = helloStr + "Hello C++\n";

	printf("%s", helloStr.c_str());

 

◆std::string::compare()

▷C언어에서 strcmp를 대체하는 멤버함수(문자열 비교)

▷동일할 경우 0, 왼쪽이 높을경우 -1, 오른쪽이 높을경우 2

	std::string str1 = "apple";
	std::string str2 = "apple";
	if (str1.compare(str2) == 0) {
		printf("두 문자열은 같습니다.\n");
	} 
	else if (str1.compare(str2) == 2) {
		printf("str2이 더 높습니다.\n");
	}
	else if (str1.compare(str2) == -1) {
		printf("str1이 더 높습니다.\n");
	}

◆std:: 란

standard namespace

◆namespace

▷프로그래머끼리 같은 이름을 사용하지 않도록 이름들을 구분해주는 역할을 하는 개념이다. (str도 여기 해당된다.)

▷JAVA에서는 package라고 불린다.

namespace hong {
	void foo() {
		printf("홍길동이 만든함수 foo 입니다.\n");
	}
	class Marine {
	public:
		Marine();
		void printInfo(int i, const char* str);
	};
}

void main(){
	hong::Marine* marine = new hong::Marine();
	marine->printInfo(0, " ");
}

void hong::Marine::printInfo(int i,const char* c) {
	printf("hi marine");
}

 

◆using namespace std;

▷이 코드 밑은 std::를 작성하지 않아도 작성한것으로 취급한다.

 

◆레퍼런스(Reference) 타입

▷파라미터를 받을 때 타입 오른쪽에 &기호를 사용하게 되면, 파라미터를 레퍼런스 타입으로 받을 수 있게 된다.

▷이 레퍼런스 타입은 파라미터로 일어나는 겂 복사를 막아주어 실행속도를 빠르게 할 수 있다는 장점이 있다.

▷정적 자료형을 레퍼런스값으로 넘겨주면 포인터로 작성하지 않아도 된다.

▷값 복사를 많이하지 않는다.

namespace hong {
	void swap(std::string& a, std::string& b) {
		std::string temp;
		temp = a;
		a = b;
		b = temp;
	}
}
int main(){
	for (int i = 0; i < 100000; i++) {
		hong::swap(value1, value2);
	}
}

'C++ > C++' 카테고리의 다른 글

[C++] STL 핵심, Generic  (0) 2023.02.16
[C++] const, static, extern  (0) 2023.02.15
[C++] Bitwise와 순수 가상함수  (0) 2023.02.13
[C++] LNK  (0) 2023.02.13
[C++] 여러개의 헤더와 소스  (0) 2023.02.13
'C++/C++' 카테고리의 다른 글
  • [C++] STL 핵심, Generic
  • [C++] const, static, extern
  • [C++] Bitwise와 순수 가상함수
  • [C++] LNK
메카인
메카인
  • 메카인
    메카인의 지식창고
    메카인
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 코딩 공부
        • TIL(Today I Learn)
        • TIL
        • 백준(C++)
        • Python
        • 알고리즘
        • 프로젝트 회고
      • C++
        • C++
        • C++ STL
        • C,C++ mCoding yotube
      • 게임개발
        • 언데드서바이벌_골드메탈_클론코딩
        • 3D_골드메탈_클론코딩
        • 유니티_문제해결
        • 게임 수학
      • Unreal 공부
        • UE5 GameDev
        • Unreal Engine 4 C++ The Ult..
      • 교재 문제 풀이
        • 운영체제
      • 정보처리기사
        • 정처기 요약
        • 정처기 오답노트
      • 학교수업
        • 데이터베이스
        • 프로그래밍 언어론
        • 리눅스 시스템
        • 네트워크
      • 일상
        • 주식
        • 독서
      • (비공개 전용)
        • memory
        • Build
        • OOP
        • Smart Pointer
        • lamda
        • 게임 수학
        • 모던 C++
        • 모던 C++ STL
        • 모던 C++ Concurrency, Paralle..
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 블로그 관리
  • 링크

  • 공지사항

    • 공지사항 - 인생과 블로그의 목표
  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
메카인
[C++] 문자열, 네임스페이스, 레퍼런스 타입
상단으로

티스토리툴바