문자열 데이터를 갖고 있는 string 객체를 char 배열(char*, char[])로 변환하는 방법을 소개합니다.
1. string.copy()를 이용한 방법
string.copy(char*, size)
는 인자로 전달된 char 배열로 size만큼 문자열을 복사합니다.
아래와 같이 string의 문자열을 char 배열로 변환할 수 있습니다.
#include <iostream>
#include <string>
#include <cstring>
int main() {
std::string str = "HelloWorld";
char chars[str.length() + 1];
str.copy(chars, str.length() + 1);
std::cout << chars << std::endl;
return 0;
}
Output:
HelloWorld
아래와 같이 동적으로 char 배열을 할당하여 copy할 수도 있습니다.
#include <iostream>
#include <string>
#include <cstring>
int main() {
std::string str = "HelloWorld";
char* chars = new char[str.length() + 1];
str.copy(chars, str.length() + 1);
chars[str.length()] = '\0';
std::cout << chars << std::endl;
return 0;
}
2. strcpy(), strncpy()를 이용한 방법
strcpy(destination, source)는 source를 destination에 복사합니다.
아래와 같이 string을 char 배열로 복사할 수 있습니다.
#include <iostream>
#include <string>
#include <cstring>
int main() {
std::string str = "HelloWorld";
char chars[str.length() + 1];
std::strcpy(chars, str.c_str());
std::cout << chars << std::endl;
return 0;
}
Output:
HelloWorld
2.1 strncpy()
strncpy(destination, source, num)
은 source에서 destination로 num 개수만큼 문자열을 복사합니다. 복사할 때 줄바꿈 문자 \0
가 포함되어있으면 문제 없지만, 포함되지 않을 수 있기 때문에 char 배열의 마지막은 \0
으로 넣어줘야 합니다.
#include <iostream>
#include <string>
#include <cstring>
int main() {
std::string str = "HelloWorld";
char chars[str.length() + 1];
std::strncpy(chars, str.c_str(), str.length());
chars[sizeof(chars) - 1] = '\0';
std::cout << chars << std::endl;
return 0;
}
Output:
HelloWorld
3. string.c_str()를 이용한 방법
string.c_str()
는 문자열이 null로 끝나는 char 배열의 주소를 리턴합니다.
아래와 같이 string을 문자열 배열로 바꿀 수 있습니다.
#include <iostream>
#include <string>
#include <cstring>
int main() {
std::string str = "HelloWorld";
const char* chars = str.c_str();
std::cout << chars << std::endl;
return 0;
}
Output:
HelloWorld
Loading script...
Related Posts
- [C++] 배열을 리스트(list)로 변환
- [C++] 배열에서 특정 요소 제거
- [C++] vector 모든 요소의 합계 계산
- [C++] 두개의 배열이 같은지 비교
- [C++] 배열에 특정 요소가 있는지 확인
- [C++] 2차 배열 복사 방법
- [C++] 배열 복사하는 방법 (copy, memcpy)
- [C++] 함수의 인자로 배열 전달
- [C++] vector 모든 값의 평균 계산
- [C++] vector를 문자열로 변환
- [C++] 배열에서 요소의 Index 찾기
- [C++] 배열의 중복 요소 찾기
- [C++] 배열의 중복 요소 제거
- [C++] 배열 순서 거꾸로 뒤집기
- [C++] char 배열을 string으로 변환
- [C++] string을 char 배열로 변환
- [C++] 문자열 거꾸로 뒤집기
- [C++] vector의 중복 요소 제거
- [C++] 두 배열을 하나의 배열로 합치기
- [C++] 배열 길이, 크기 얻는 방법
- [C++] 배열에서 최대값, 최소값 찾기 (3가지 방법)
- [C++] int를 string으로 변환, 3가지 방법
- [C++] 문자열 리스트(Vector, 배열) 정렬
- [C++] string의 문자 정렬
- [C++] string을 int로 변환, 3가지 방법
- [C++] string 대문자/소문자 변환 방법
- [C++] string.compare() 문자열 비교
- [C++] int를 char로 변환, 3가지 방법
- [C++] 문자열 자르기, 3가지 방법
- [C++] isdigit(), 어떤 문자가 숫자인지 확인
- [C++] strlen(), 문자열 길이 계산
- [C++] strcmp(), strncmp() 함수로 문자열 비교
- [C++] strstr(), 특정 문자열 찾기