바야바네 움집
printf()로 string 변수 출력하기 본문
📌문제 상황
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
'📘C++' 카테고리의 다른 글
[Geeksforgeeks] Given an array A[] and a number x, check for pair in A[] with sum as x (0) | 2021.11.24 |
---|---|
[정리] 문자열 : strtok (0) | 2021.11.24 |
Comments