바야바네 움집

printf()로 string 변수 출력하기 본문

📘C++

printf()로 string 변수 출력하기

친절한 바야바 2021. 11. 23. 22:05

📌문제 상황

 

printf()를 통해 string을 출력하고자 했지만 실패했다. 값이 잘못 저장된 줄 알았으나 cout을 사용해 출력하면 문제없이 원하는 값이 나오는 것을 볼 수 있었다.

 

string myToLower(string _str) // ABCD
{
    string temp = "";
    for(int i=0; i<_str.length(); i++)
    {
        int c = _str[i];
        if(c >= 'A' && c <= 'Z')
            temp += (char)(c - 'A' + 'a');
        else
            temp += (char)c;
    }
    cout << temp << endl; // abcd
    // printf("%s", temp); // 綜a
    return temp;
}

 

cout << temp << endl; 는 오류없이 잘 출력되는데

printf(%s", temp); 는 오류가 나는 이유가 뭘까?

 

 

 

📌해결

C++의 string은 C에는 정의되어 있지 않은 타입이다. 그렇기에 C의 printf 함수에는 string에 대한 옵션이 없다. 따라서 printf를 사용해 string 변수를 출력하고 싶다면 string을 C-Style 로 변환해줄 필요가 있다. 변환 방법은 다음과 같다.

printf("%s", temp.c_str());

string 변수에서 c_str() 메소드를 호출해주면 됨.

 

 

 

📌참고

https://stackoverflow.com/questions/10865957/printf-with-stdstring

 

printf with std::string?

My understanding is that string is a member of the std namespace, so why does the following occur? #include <iostream> int main() { using namespace std; string myString = "Press EN...

stackoverflow.com

Comments