C++의 문자열: char* vs string

yun·2023년 11월 12일
0

C++

목록 보기
2/41

Q. 왜 아두이노 ESP32보드를 사용할 때 주소를 char*로 넘길까?
A. 함수에서 char*를 arg로 받고 있어서

int begin(const char* ssid, const char *passphrase);

Q. 근데 왜 char*를 쓰죠? string을 써도 되는데?
1) char*로 값을 받으면 길이를 비교하기 편하다.
2) 값이 변경되어야 하는 변수에는 string을 쓴다. 변경하지 않고 한 번 할당한 값을 계속 쓴다면 (const char*만 유효하고 그냥 char*로는 사용할 수 없다) char*로 사용하자.

  • char*

    • pointer이므로 직접 변수에 접근하거나 수정할 수 없다.
    • 값을 읽는 것만 가능
  • char* → string

const char *s = "Hello, World!";
std::string str(s);
  • string → const char*
std::string str;
const char *c = str.c_str();
  • string → char*
std::string str;

// before 17
char *c = &str[0];

// since 17
std::string str;
char *c = str.data();

0개의 댓글