Home C++ printf에서 string 출력하기
Post
Cancel

C++ printf에서 string 출력하기

C++을 사용하다 보면 문자열을 사용할 때 char[]보다는 string 클래스가 문자열을 편리하게 다룰 수 있어 주로 사용하게 되는데

string과 printf 함수를 함께 사용해보면 알겠지만 printf에서 string을 사용하면 오류가 발생한다 그렇기에 블로그 글에서는 string이 printf로 출력되지 않는 이유와 이를 해결하는 방법에 대해 알아보겠다

string을 printf로 출력할 수 없는 이유

printf 함수는 C 언어에서 유래한 함수로 C++과 C는 호환이 되기에 C++에서도 사용할 수 있다 여기서 string이 printf로 출력할 수 없는 이유가 나오는데 printf는 C 스타일의 문자열 즉 char* 타입의 문자열을 출력하기 위해 설계되었다

반면 C++의 string 클래스는 char* 타입이 아닌 복잡한 객체로 printf와 직접 호환되지 않다 그렇기에 printf를 통해서 string 타입을 출력할 수 없는 것이다

string을 printf로 출력하는 방법

c_str()

c_str() 메서드는 string을 C 스타일 문자열 즉 const char* 타입으로 변환해준다 이를 활용하면 printf 함수에 string을 사용하여 출력할 수 있다

말로는 잘 이해가 안될 수 있으니 코드로 살펴보면

1
2
3
4
5
6
7
8
#include <iostream>
#include <string>

int main() {
    std::string myString = "Hello, World!";
    printf("My string: %s\n", myString.c_str());
    return 0;
}

data()

data() 메서드를 사용해서도 c_str()과 유사하게 string을 C 스타일 문자열로 변환할 수 있다 다만 끝에 널 문자(‘\0’)를 보장하지 않는다 그러나 C++11 이후에서는 c_str()과 동일하게 동작하도록 변경되었기에 신경쓰지 않아도 된다

1
2
3
4
5
6
7
8
#include <iostream>
#include <string>

int main() {
    std::string myString = "Hello, C++!";
    printf("My string: %s\n", myString.data());
    return 0;
}

결론

C++에서 string 타입을 출력하기 위해서는 c_str 또는 data를 사용한다 다만, string을 사용할 때는 꼭 printf를 써야하는 것이 아니라면 간편하게 cout을 사용하도록 하자

This post is licensed under CC BY 4.0 by the author.

12월 7일 Today I Learned

12월 8일 Today I Learned