메모내용
Nav

std::string to char[]

  1. std::string 객체에서 c_str() 또는 data() 메소드를 사용하여 C 스타일 문자열을 얻을 수 있습니다.
  2. strcpy() 함수를 사용하여 cahr 배열로 복사할 수 있습니다.
                        
#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;
}