#include <iostream>
#include <string>
#include <cstring> // for strcpy
int main()
{
std::string str = "Hello World!";
// 문자열 길이 +1 (null 문자포함) 을 고려하여 char 배열을 선언합니다.
char charArray[20];
// 2. std::string 에서 char 배열로 복사합니다.
strcpy_s(charArray, str.c_str());
// 이제 char Array 를 사용할 수 있습니다.
std::cout << "charArray: " << charArray << std::endl;
return 0;
}
C++11 이후부터는 std::copy 함수를 사용할 수도 있습니다.
#include <iostream>
#include <string>
#include <algorithm> // for std::copy
int main() {
std::string str = "Hello, World!";
// 1. 문자열 길이 + 1 (null 문자 포함)을 고려하여 char 배열을 선언합니다.
char charArray[str.length() + 1]; // str.length 가 상수가 아니라서 수정해야 할 수 도 있습니다.
// 2. std::string에서 char 배열로 복사합니다.
std::copy(str.begin(), str.end(), charArray);
// 3. null 문자를 추가합니다.
charArray[str.length()] = '\0';
// 이제 charArray를 사용할 수 있습니다.
std::cout << "charArray: " << charArray << std::endl;
return 0;
}
std::sprintf 를 사용하면 형식화된 출력이 가능하므로, 단순히 문자열을 복사하는 것 외에도 다양한 형식으로 문자열을 조작할 수 있습니다. 예를 들어, 문자열에 추가적인 텍스트를 포함시키거나, 숫자와 함께 출력할 수도 있습니다.
#include <iostream>
#include <string>
#include <cstdio> // for sprintf
int main() {
std::string str = "Hello, World!";
// 1. 문자열 길이 + 1 (null 문자 포함)을 고려하여 char 배열을 선언합니다.
char charArray[str.length() + 1];
// 2. sprintf를 사용하여 std::string에서 char 배열로 복사합니다.
std::sprintf(charArray, "%s", str.c_str());
// 이제 charArray를 사용할 수 있습니다.
std::cout << "charArray: " << charArray << std::endl;
return 0;
}
#include <iostream>
#include <string>
#include <cstdio> // for sprintf
int main() {
std::string str = "Hello";
int number = 42;
// 1. 예상 출력 길이를 고려하여 충분히 큰 char 배열을 선언합니다.
char charArray[50]; // 충분히 큰 배열 크기
// 2. sprintf를 사용하여 형식화된 문자열을 char 배열에 저장합니다.
std::sprintf(charArray, "%s, World! The number is %d.", str.c_str(), number);
// 이제 charArray를 사용할 수 있습니다.
std::cout << "charArray: " << charArray << std::endl;
return 0;
}