◆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 |