[C++] string 문자열을 배열에 복사하기
[C++] string 문자열을 배열에 복사하기
string 은 c++에서 사용하는 문자열 클래스이다.
c 로 개발된 인터페이스를 사용할 때, 문자열 배열과 혼용해서 사용해야 한다.
문자열 배열의 값을 string으로 복사할 수도 있고, string 을 문자열 배열로 복사할 수도 있다.
문자열 배열을 string으로 복사하는 거는 쉽다. 그냥 "=" 을 사용하면, string 으로 복사된다.
하지만 string을 문자열 배열에 복사할 때는 조금 복잡한 과정을 거친다.
아래는 그 예제이다.
#include <iostream> #include <string> #include <cstring> using namespace std; int main(){ string cppstyle = "My name is Hyeon"; char* cstyle = new char[cppstyle.size() + 1]; // cppstyle의 문자열을 얻어서 복사한다. strcpy_s(cstyle, cppstyle.size()+1, cppstyle.c_str()); cstyle[0] = 'Z'; cout << "cstyle = " << cstyle << endl; cout << "cppstyle = " << cppstyle << endl; delete[] cstyle; cstyle = NULL; return 0; } |
문자열 배열에 string의 값을 복사하기 위해 string 문자열 길이+1 의 문자열 배열을 동적으로 할당한다.
길이 +1 이 되는 이유는 문자열 배열 마지막에 NULL이 들어가야 하기 때문이다.
string에서 문자열 배열로의 복사는 strcpy()를 사용한다.
하지만 string 문자열을 그대로 인자로 사용할 수 없고, string 에서 c_str() 함수를 호출하여, 반환값을 인자로 사용한다.
string.c_str() : string 문자열의 첫번째 문자의 주소를 반환한다.
위와 같이 strcpy()를 사용하면, 복사가 완료된다.
* strcpy()가 빌드시에 안전하지 않다고 에러가 날 수도 있다. 그러면 예제와 같이 strcpy_s()를 사용한다.
출처: https://hyeonstorage.tistory.com/305?category=601868 [개발이 하고 싶어요]
'기타 > C++' 카테고리의 다른 글
[C++] LinkedList 구현하기 예제 (0) | 2019.07.30 |
---|---|
[C++] 왜 포인터는 하나의 타입밖에 가리킬 수 없는가? (0) | 2019.07.27 |
[C++] 비트 연산과 쉬프트 (>>, <<) (0) | 2019.07.27 |
[C++] 문자열 입력 getline()과 버퍼오버플로우 (0) | 2019.07.27 |
[C++] 문자열 합치기 strcat(), 문자열 비교 strcmp() (0) | 2019.07.27 |
[C++] 문자열 길이 strlen(), 문자열 복사 strcpy() (0) | 2019.07.27 |
[C++] 문자열 뒤집기 예제 (0) | 2019.07.27 |
[C++] 동적 메모리 할당 예제 new delete (0) | 2019.07.27 |